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

标签 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

它可以将目录和子目录中的所有文件复制到目的地,但我不能过滤文件类型。

还有其他方法可以实现我想要的吗?

最佳答案

您可以使用 find获取所需的源文件,然后使用 cp-execfind 的谓词将文件复制到所需的目的地。使用 GNU cp :

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

POSIX-ly:

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

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

相关文章:

c++ - vector 如何找到第一个和最后一个当前值

regex - 在 Visual Studio 中使用正则表达式查找并替换特定字符串中的字符串

linux - 尝试理解 sys_socketcall 参数

linux - Linux 中上传文件的 Graphicsmagick 文件权限

java - 为什么使用重定向的输入/输出流执行交互过程会导致应用程序停止?

python - ALSA & Python - 捕获多个单声道音频输入

linux - shell脚本用空格连接两个字符串

bash - 如何获取上周四(含)?

java - 如何在目录中搜索带有re的文件?

bash - 使用 Ubuntu 以递归方式重命名以扩展名 '.mpeg' 结尾的文件