我需要找到所有不包含以.counts.txt结尾的文件的名称在其中的文件夹。通过结合我在网上找到的一些建议,我能够提出以下命令(用于bash),该命令可以实现我想要的功能。
find . maxdepth 1 -type d -name "*[0-9]*" ! -exec sh -c 'ls -1 "{}" | egrep -q "*.counts.txt"' \; -print
但是,我不了解其某些功能:
sh
而不是直接管道连接到打开新的外壳ls
?!
否定下一个条件,即-exec sh -c 'ls -1 "{}" | egrep -q "*.counts.txt"' \;
。因为这是一个-exec
否定的条件,所以我们必须记住,如果它执行的命令返回的状态为0,则它为true(如果状态不为0,则该条件为true)。-exec
不会传递到外壳程序,而是直接执行,因此没有可用的管道概念。如果要在其中放置竖线字符,则外壳(开始查找自身)将使用该字符,并且find的所有输出将输入egrep。请参阅man find
有关的文档!
和-exec
args作为发现。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句