如何将没有特定扩展名的所有文件复制到另一个目录?

如何将没有特定扩展名的所有文件复制到另一个目录?

我有两个目录dir1dir2.我想将所有文件和文件夹复制到,dir1dir2具有扩展名的文件除外.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 或paxDebian 上的软件包中找到的),它还排除目标以 结尾的符号链接,.txt即使符号链接名称本身不以.txt.

另一个区别是rsync,虽然它排除了目录其名称以 结尾.txt,它不排除这些目录中的非 txt 文件。添加 a-s'|.*\.txt/.*||'也可排除这些内容。

-pe尝试保留尽可能多的元数据(元数据列表因实现而异pax)。使用rsync,请参阅-a( -rlptgoD)-AXUHN选项来选择要保留的内容。

相关内容