我有一个/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和子目录中的所有文件复制到目标,但我无法筛选文件类型。
有没有别的方法可以达到我想要的目的?

最佳答案

您可以使用find获取所需的源文件,然后在cp-exec谓词中使用find将文件复制到所需的目标。使用gnucp

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

波西克斯利:
find /dir1/ -type f \( -name '*.txt' -o -name '*.jpg' \) -exec cp {} /dir2/ \;

关于linux - 如何将目录及其子目录中的所有文件复制到另一个目录?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42431682/

10-11 02:27