Car*_*901 1 grep directory find shell-script
假设我有以下树:
root:
d foo
d bar
/foo:
d A
- tmp.txt
/bar:
d B
- tmp2.txt
/foo/A:
- tmp3.txt
/bar/B:
Run Code Online (Sandbox Code Playgroud)
d = 目录和 - = 文件
我需要回答以下问题:哪个目录(不包括根目录)包含最少的条目?
我试过了
find . | grep -oE '/([a-zA-Z]+/)+'
Run Code Online (Sandbox Code Playgroud)
获取每个目录的出现次数。问题是这个命令排除空目录,在这种情况下 /bar/B 被排除在外。
任何有关如何解决此问题的指导将不胜感激。
使用 GNU 工具:
find . -printf '%h\0' -type d ! -name . -print0 |
sort -z |
uniq -zc |
sort -zn |
sed -z q |
tr '\0' '\n'
Run Code Online (Sandbox Code Playgroud)
如果可以保证文件名不包含换行符,则可以将其简化为:
find . -printf '%h\n' -type d ! -name . -print | sort | uniq -c | sort -n | head -n1
Run Code Online (Sandbox Code Playgroud)
(报告的数字是目录中的文件数减 1(.
已计算,但未计算..
))。
与zsh
:
count() {
set -- $REPLY/*(NDoN)
REPLY=$#
}
print -r -- **/*(Do+count[1])
Run Code Online (Sandbox Code Playgroud)