如何在执行文件操作时排除文件夹,例如cp等
我目前使用通配符*来应用文件操作,但是我需要排除一个文件夹。
我实际上想要使用的命令是更改目录中的所有文件的所有者,但我需要排除一个子目录。
逆向Globbing:
你想要一个glob的逆匹配 ,我会这样做:
如果启用扩展匹配,则可以使用较新的bash进行逆匹配。 例如,要匹配名称中没有foo或bar的所有内容:
shopt -s extglob echo !(*foo*|*bar*)
或者只是没有foo的一切:
shopt -s extglob echo !(*foo*)
找:
你也可以使用find(这是我认为最强大的选项),并使用! 否定匹配,然后用xargs -0
运行命令:
find . ! -iname 'foo' -print0 | xargs -0 echo
简单:
只要mv文件夹别的地方,做你需要做的,把它放回:-)
rsync -arv –exclude = {files} {目的地}
查找解决scheme会为每个文件生成一个chown进程,有时候这可能是一个问题。 此解决scheme只产生一个perl进程:
find . | perl -nle "chown($(id -u user), $(id -g group), \$_) unless m/foo/"