我需要找到名称中包含特定字符的所有目录并将其打印出来。
所以如果我有目录:
abc cde fgh
然后我搜索“c”,应该得到:
abc
cde
答案1
以下命令执行所需的查询:
find -name "*c*" -type d
- 从当前目录开始(如果是当前目录则无需指定目录)
-name "*c*"
- 名称包含字母c
-type d
- 这是一个目录
您可以在其他目录()上运行该命令/full/path/to/dir
:
find /full/path/to/dir -name "*c*" -type d
更多信息nixCraft 查找命令
答案2
如果globstar
已启用,您可以使用它
for d in **/*c*/; do echo $d; done
第一个**
将匹配任意子目录路径。然后*c*/
匹配包含 c 字符的文件夹
如果尚未启用,你可以使用以下方法启用它shopt -s globstar
全球星
- 如果设置,文件名扩展上下文中使用的模式
**
将匹配所有文件和零个或多个目录和子目录。如果模式后跟/
,则仅匹配目录和子目录。
答案3
for dir in `find -name "*c*" -type d -maxdepth 1`; do
echo $dir
done