什么';这是最简洁的“s”版本;匹配除这些字符串以外的所有内容”;在shell还是regex中?
Linux:我想列出一个目录及其子目录中的所有文件,除了一些字符串。为此,我一直在使用find/grep/shell globbing的组合。例如,我想列出除目录中的文件以外的所有文件什么';这是最简洁的“s”版本;匹配除这些字符串以外的所有内容”;在shell还是regex中?,regex,shell,grep,Regex,Shell,Grep,Linux:我想列出一个目录及其子目录中的所有文件,除了一些字符串。为此,我一直在使用find/grep/shell globbing的组合。例如,我想列出除目录中的文件以外的所有文件 ./bin ./lib ./resources 我理解这可以按所示和所示完成。但这两个版本并不能解决“一切,但这一模式”的一般问题 似乎使用条件来过滤结果要容易得多,但我想知道在regexp或shell扩展的globbing中是否有紧凑而优雅的方式来描述这一点 谢谢。您的命令| egrep-v“pattern1
./bin
./lib
./resources
我理解这可以按所示和所示完成。但这两个版本并不能解决“一切,但这一模式”的一般问题
似乎使用条件来过滤结果要容易得多,但我想知道在regexp或shell扩展的globbing中是否有紧凑而优雅的方式来描述这一点
谢谢。
您的命令| egrep-v“pattern1 | pattern2 | pattern3”
使用find的prune选项
find . -path './bin' -prune -o -path './lib' -prune -o -path './resources' -prune -o «rest of your find params»
启用后,您可以使用排除文件代码>在您的应用程序中。一些例子:
- 除了bin、lib和资源之外的所有内容
shopt -s extglob
ls -Rl !(bin|lib|resources)
(所有包含
i
的内容都与所有内容相同,但不包含i
的内容除外。)
我不知道这个白鹭开关。这是一个好办法。谢谢这将抑制所有文件,这些文件的名称中恰好有模式,这可能比您想要抑制的文件更多。我同意@vartec的观点-这可能是危险的。我更喜欢删减选项。不能用行尾/行首字符来限制它?^美元呢?因为这个选项更简洁,更容易阅读。避免使用“here”作为链接文本。对不起,因为英语不是我的母语,我不知道正确的方法。你能推荐一些吗?谢谢,最小巧的。我也尝试过类似的方法,但从来没有意识到如果你把*放在一起,那么任何东西都是匹配的,所以没有其他东西。我想知道如何在更多限制的基础上增加这一点。比如:“除了“bin”和“lib”,所有有“i”的东西。。。
ls -Rl !(bin|lib|!(*i*))