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字符(