如何将具有相同后缀的所有文件复制到另一个目录? - Unix

时间:2013-06-27 12:23:08

标签: linux file unix copy find

我有一个目录,其中包含未知数量的子目录和未知级别的子*目录。如何将所有带有相同后缀的文件复制到新目录?

E.g。从这个目录:

> some-dir
  >> foo-subdir
    >>> bar-sudsubdir
      >>>> file-adx.txt
  >> foobar-subdir
    >>> file-kiv.txt

将所有* .txt文件移至:

> new-dir
 >> file-adx.txt
 >> file-kiv.txt

2 个答案:

答案 0 :(得分:4)

一种选择是使用find

find some-dir -type f -name "*.txt" -exec cp \{\} new-dir \;

find some-dir -type f -name "*.txt"会在*.txt目录中找到some-dir个文件。 -exec选项为cp file new.txt表示的每个匹配文件构建命令行(例如{})。

答案 1 :(得分:2)

findxargs一起使用,如下所示:

find some-dir -type f -name "*.txt" -print0 | xargs -0 cp --target-directory=new-dir

对于大量文件,此xargs版本比使用find some-dir -type f -name "*.txt" -exec cp {} new-dir \;更高效,因为xargs会一次将多个文件传递到cp,而不是调用每个文件cp一次。因此,使用xargs版本的fork / exec调用次数会减少。