我正在尝试查找文件夹,但不包括以代字号(“〜”)开头的文件夹。我尝试了以下方法,但结果为零。似乎find
正在将波浪号解释为通配符。
find . -type d -not -path '*/\~*'
find . -type d -not -path '*/~*'
find . -type d -not -regex '.*/~.*'
find . -type d -not -regex '.*/\~.*'
我的find版本是find (GNU findutils) 4.6.0
。
要跳过./path/to/~dir
文件夹,但不要跳过./path/to/~dir/subdir
,正如其他人已经说过的那样,您可以执行以下操作:
find . ! -name '~*' -type d -print
如果你也想不下降到这些文件夹(并找到更多的文件夹在那里),你会怎么做:
find . -name '~*' -prune -o -type d -print
这就告诉find
修剪根于名称以开头的目录的分支~
。
该功能在很大程度上应等同于您的:
find . -type d ! -path '*/~*'
除了后者不进行修剪外,尽管它不打印任何目录,但仍会在这些目录中查找,因此效率较低。
¹两者之间存在一些差异,即“第一个*
”*/~*
可能与包含无效字符的文件名不匹配
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句