我有/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
它可以将dir和子目录中的所有文件复制到目标,但我无法过滤文件类型。
还有另一种可以实现我想要的方式吗?
答案 0 :(得分:3)
您可以使用find
获取所需的源文件,然后在cp
的{{1}}谓词中使用-exec
将文件复制到所需的目标位置。使用GNU find
:
cp
POSIX-LY:
find /dir1/ -type f \( -name '*.txt' -o -name '*.jpg' \) -exec cp -t /dir2/ {} +