SLES 15中使用find命令搜索可执行文件时排除/.snapshots目录的解决方案
SLES 15中使用find命令搜索可执行文件时排除/.snapshots目录的解决方案
我完全懂你现在的困扰——在SLES上用find查找名为pxe的可执行文件时,/.snapshots目录总是跳出文件系统循环的报错,而且之前尝试的排除参数根本没起作用对吧?
其实问题出在你之前命令里参数的顺序上:你把-print放在了排除条件的前面,这就导致find先把内容打印出来,再去判断要不要排除,所以循环提示还是会出现,排除逻辑也没生效。调整一下参数顺序,或者用更高效的-prune参数就能解决。
给你两个可行的解决方案:
方案一:调整排除条件的位置
把排除/.snapshots目录的条件放在最前面,让find先跳过这个目录下的所有内容,再去查找符合要求的文件:
find / -type f -not -path "*/.snapshots/*" -executable -print | grep pxe$
这样运行后,就不会再出现文件系统循环的提示,而且只会输出你需要的那些pxe文件路径。
方案二:用-prune直接跳过整个目录(更推荐)
-prune参数可以让find直接跳过指定的目录,不会进去遍历任何内容,不仅能解决循环问题,还能提升搜索速度:
find / -path "*/.snapshots" -prune -o -type f -executable -print | grep pxe$
这里的逻辑是:如果找到/.snapshots目录,就用-prune跳过它;否则(-o表示“或”),就执行后面的查找可执行文件并打印的操作。
你可以试试这两个命令,应该就能完美解决你的问题了。
备注:内容来源于stack exchange,提问作者redpy
相关产品推荐
相关产品推荐

