【发布时间】:2010-10-20 10:21:45
【问题描述】:
所以我有一个目录 - 比如说 /dir/。 在里面我有这些文件夹- /dir/fold1/ /dir/fold2/ /dir/fold3/
每个文件夹 (fold1,2,3) 都可能包含一个名为 foo 的文件夹。我想列出 dir 中的所有文件夹,其中包含一个名为 foo 的文件夹。
谢谢!
【问题讨论】:
标签: linux command-line directory
所以我有一个目录 - 比如说 /dir/。 在里面我有这些文件夹- /dir/fold1/ /dir/fold2/ /dir/fold3/
每个文件夹 (fold1,2,3) 都可能包含一个名为 foo 的文件夹。我想列出 dir 中的所有文件夹,其中包含一个名为 foo 的文件夹。
谢谢!
【问题讨论】:
标签: linux command-line directory
ls -ld /dir/*/foo | grep ^d
【讨论】:
如果你想在第一级列出所有只包含一个名为foo的子目录的目录,你可以这样做
for x in /dir/*; do
[ -d $x/foo ] && ls $x
done
[ ... ] 构造是 shell 内置 test 的缩写。 -d $x/foo 测试 $x/foo 是否存在并且是一个目录。如果是,则执行ls $x。
【讨论】:
怎么样
ls -R /dir | grep -i foo
分解我们的命令:
ls -R = 递归列出文件(包括目录
grep -i foo = 将采用上面的命令并过滤它不区分大小写以显示任何 'foo' 实例。
【讨论】:
我建议:
find /dir -name foo -type d -exec dirname {} \; | xargs ls
但如果任何目录中包含空格,这将不起作用。
【讨论】:
使用这个:
find dir -type d -name foo
所以...dir 是您要搜索的目录。
-type 是您要查找的类型:directory、file 或 link。
-name 是您要查找的名称,区分大小写。如果您希望它不区分大小写,可以使用-iname。
【讨论】: