我有两个目录,比如dir1
和dir2
,它们具有完全相同的目录结构。如何以递归方式将所有*.txt
文件从dir1
复制到dir2
?
示例:
我想从
复制dir1/subdir1/file.txt
dir1/subdir2/someFile.txt
dir1/.../..../anotherFile.txt
到
dir2/subdir1/file.txt
dir2/subdir2/someFile.txt
dir2/.../..../anotherFile.txt
最后一个文件示例中的.../...
表示这可以是任何子目录,它本身可以有子目录。
我想再次以编程方式执行此操作。这是伪代码
SRC=dir1
DST=dir2
for f in `find ./$SRC "*.txt"`; do
# $f should now be dir1/subdir1/file.txt
# I want to copy it to dir2/subdir1/file.txt
# the next line coveys the idea, but does not work
# I'm attempting to substitute "dir1" with "dir2" in $f,
# and store the new path in tmp.txt
echo `sed -i "s/$SRC/$DST/" $f` > tmp.txt
# Do the copy
cp -f $f `cat tmp.txt`
done
答案 0 :(得分:3)
您只需使用rsync
即可。此答案基于此thread。
rsync -av --include='*.txt' --include='*/' --exclude='*' dir1/ dir2/
答案 1 :(得分:0)
如果您在dir1中只有.txt
个文件,则可以使用:
cp -R dir1/* dir2/
但是如果你有其他文件扩展名,它也会复制它们。在这种情况下,这将起作用:
cd /path/to/dir1
cp --parents `find . -name '*.txt'` path/to/dir2/