cp命令应该忽略一些文件
有时我需要执行以下命令
cp -rv demo demo_bkp
但是我想忽略目录.git中的所有文件。 我如何实现这一目标? 复制.git文件需要很长时间,我不需要这些文件。
要特别忽略一个git目录,我会先尝试git export 。
但一般来说,要复制一个不包含某些文件或文件夹的目录树,我建议使用rsync而不是cp 。 语法大多相同,但rsync有更多选择,其中包括一个用于排除选定文件的选项:
rsync -rv --exclude=.git demo demo_bkp
请参阅手册页以获取更多信息。
好。 振作起来。 这并不漂亮。
find demo -depth -name .git -prune -o -print0 | cpio -0pdv --quiet demo_bkp
这里发生了什么?
find demo | cpio -p demo_bkp find demo | cpio -p demo_bkp找到符合你想要的任何标准的文件,并使用cpio来复制它们(所谓的“传递”模式)。
find -depth更改打印文件的顺序以匹配cpio所需的顺序。
find -name .git -prune告诉find不要递减.git目录。
find -print0 | cpio -0 find -print0 | cpio -0可以使用NUL字符(
