如何使用 Linux find 命令搜索以特定字母开头的目录。
例如,我想在以字母开头的所有目录中搜索以a
开头的文件或目录b
。
答案1
尝试在查找中进行查找:
查找 . -type d -name "a*" -exec find {} -name "b" \;
从当前目录 ( .
) 开始,find 将递归查找以字母 a 开头的所有目录。对于找到的每个目录,它将在其中查找名为 b 的文件。
如果你只希望它查找以A,并且其中没有目录A*文件夹,使用最大深度:
查找 . -type d -name "a*" -exec find {} -maxdepth 1 -name "b" \;
消除错误:
查找 . -type d -name "a*" 2> /dev/null -exec find {} -maxdepth 1 -name "b" \;
答案2
对于可能对此问题感到困惑的人们,我们仅提供一个简单的更新。
除了解决方案约翰·T我还发现您可以使用 prune 开关排除目录(我想我应该早点读一下手册页,呵呵。)
例如,如果我想在所有目录中搜索文件或目录“b”(以“a”开头的目录除外),我可以这样做
find . -path 'a*' -prune -o -name "b" -print
兵
答案3
您还可以使用 find -regex...
find -regex .*/a.*/b