我想将目录数据中以字母开头的所有文件递归复制到目录测试。所以我写了这个:
find data -type f -exec grep '^[a-z]' {} \; -exec cp -f {} ./test \;
但是,它也匹配其他文件。
代码出了什么问题?
答案 0 :(得分:1)
您的命令不会对文件名执行grep
,而是这些文件的内容。
你说:
复制所有以目录
中的字母开头的文件
将使用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 \;