【问题标题】:linux recursive copy specified files doesn't worklinux递归复制指定文件不起作用
【发布时间】:2016-05-04 03:38:12
【问题描述】:

我想递归复制目录数据中所有以字母开头的文件到目录test。所以我写了这个:

find data -type f -exec grep '^[a-z]' {} \; -exec cp -f {} ./test \;

但是,它也匹配其他文件。

代码有什么问题?

【问题讨论】:

    标签: regex linux macos terminal


    【解决方案1】:

    您的命令不是在文件名上执行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 \;
    

    【讨论】:

      猜你喜欢
      • 2014-10-20
      • 1970-01-01
      • 2011-10-27
      • 1970-01-01
      • 1970-01-01
      • 2019-11-04
      • 2017-01-13
      • 1970-01-01
      相关资源
      最近更新 更多