如何将目录及其子目录中的所有文件复制到另一个目录?

时间:2017-02-24 05:50:49

标签: linux bash find cp

我有/dir1,结构是:

./aaa.txt
./bbb.jpg
./subdir1/cccc.doc
./subdir1/eeee.txt
./subdir2/dddd.xls
./subdir2/ffff.jpg

我想将.txt及其子目录中的所有.jpg/dir1复制到/dir2

通过使用cp -r /dir1/* /dir2,它会将所有文件及其结构复制到/dir2

使用cp -r /dir1/*.jpg /dir2cp -r /dir1/*.txt /dir2,它不会复制子目录中的.jpg.txt文件。

使用

for FILE in `find`
do
  cp -f $FILE /dir1/
done

它可以将dir和子目录中的所有文件复制到目标,但我无法过滤文件类型。

还有另一种可以实现我想要的方式吗?

1 个答案:

答案 0 :(得分:3)

您可以使用find获取所需的源文件,然后在cp的{​​{1}}谓词中使用-exec将文件复制到所需的目标位置。使用GNU find

cp

POSIX-LY:

find /dir1/ -type f \( -name '*.txt' -o -name '*.jpg' \) -exec cp -t /dir2/ {} +