我想递归复制目录data中所有以字母开头的文件到目录test。所以我写了这个:
find data -type f -exec grep '^[a-z]' {} \; -exec cp -f {} ./test \;
但是,它也匹配其他文件。
代码有什么问题?
最佳答案
您的命令未执行 grep
在文件名上,而是在这些文件的内容上。
你说:
copy all the files which start with letters in directory
这将使用 find
命令匹配需要 -name
的文件名选项。例如,
find data -type f -name '[a-z]*'
通过使用 -exec
选项来查找,而不是在 grep '^[a-z]' {}
的每个文件上执行提供的命令 ( find
)在数据目录中查找,因为没有文件名匹配子句 ( -name
)。
您可能需要的命令是:
find data -type f -name '[a-z]*' -exec cp -f {} ./test \;
关于regex - linux递归复制指定的文件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37017969/