我有两个目录dir1
和dir2
.我想将所有文件和文件夹复制到,dir1
但dir2
具有扩展名的文件除外.txt
。我怎样才能做到这一点?
答案1
rsync
与选项一起使用--exclude
。
rsync -av --exclude '*.txt' dir1/ dir2/
答案2
POSIXly:
cd dir1 && LC_ALL=C pax -rwpe -'s|.*\.txt||' . ../dir2
请注意,至少从实施http://www.mirbsd.org/pax.htm(例如在 MirBSD 或pax
Debian 上的软件包中找到的),它还排除目标以 结尾的符号链接,.txt
即使符号链接名称本身不以.txt
.
另一个区别是rsync
,虽然它排除了目录其名称以 结尾.txt
,它不排除这些目录中的非 txt 文件。添加 a-s'|.*\.txt/.*||'
也可排除这些内容。
-pe
尝试保留尽可能多的元数据(元数据列表因实现而异pax
)。使用rsync
,请参阅-a
( -rlptgoD
)-AXUHN
选项来选择要保留的内容。