我有一个 /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 /dir2
和 cp -r /dir1/*.txt /dir2
, 它不会复制 .jpg
和 .txt
子目录中的文件。
通过使用
for FILE in `find`
do
cp -f $FILE /dir1/
done
它可以将目录和子目录中的所有文件复制到目的地,但我不能过滤文件类型。
还有其他方法可以实现我想要的吗?
最佳答案
您可以使用 find
获取所需的源文件,然后使用 cp
在 -exec
内find
的谓词将文件复制到所需的目的地。使用 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/