我想找到所有命名的目录,Contents
然后从找到的结果列表中,我想过滤它们,只包括那些Database.json
直接在其中命名的文件。
find / -type d -name Contents 2>/dev/null |
while read dir;
do
if [ -f $dir/Database.json ]; then
echo $dir
fi
done
此代码有效。但我认为这是矫枉过正。我认为应该有一个更简单的方法来做到这一点。
我可以重写这段代码以变得更简单吗?
使用 GNU
find
,您可以:Where
%h
为您提供h
路径的开头,即目录名。LC_ALL=C
*
无论用户的语言环境将什么视为字符,都需要匹配任何字节序列,因为文件路径可以由 0 以外的任何字节序列组成,而不必在用户的语言环境中构成字符。与 类似
zsh
,还为您提供排序列表,不包括隐藏列表,还将报告符号链接添加到包含 a 的目录Database.json
:为了更接近 GNU
find
的方法:在哪里:
D
包括隐藏文件(D
ot 文件)oN
没有N
列出o
清单。/
选择目录类型的文件。e['code']
检查目录是否包含Database.json
任何类型的文件,包括损坏的符号L
墨水。在任何情况下,您都不能像在那儿那样对列表进行后处理。相反,你会这样做:
使用 GNU
find
和zsh
orbash
:与
zsh
:也可以看看: