【发布时间】:2016-05-04 03:38:12
【问题描述】:
我想递归复制目录数据中所有以字母开头的文件到目录test。所以我写了这个:
find data -type f -exec grep '^[a-z]' {} \; -exec cp -f {} ./test \;
但是,它也匹配其他文件。
代码有什么问题?
【问题讨论】:
标签: regex linux macos terminal
我想递归复制目录数据中所有以字母开头的文件到目录test。所以我写了这个:
find data -type f -exec grep '^[a-z]' {} \; -exec cp -f {} ./test \;
但是,它也匹配其他文件。
代码有什么问题?
【问题讨论】:
标签: regex linux macos terminal
您的命令不是在文件名上执行grep,而是在这些文件的内容上执行。
你说:
复制目录中所有以字母开头的文件
这将使用与需要-name 选项的文件名匹配的find 命令。例如,
find data -type f -name '[a-z]*'
通过使用-exec 选项进行查找,您正在对find 在数据目录中找到的每个文件执行提供的命令(grep '^[a-z]' {}),因为没有文件名匹配子句(-name) .
你可能想要的命令是:
find data -type f -name '[a-z]*' -exec cp -f {} ./test \;
【讨论】: