不使用查找和单命令:显示 PWD 和第三级目录中存在的所有文件名。
我有一个糟糕的解决方案来显示第 3 级存在的所有文件:
ls -l ./*/*/* |grep ^- |awk '{print $9}'| grep -E ^./\(.*/\){2}
或者
ls -ld ./*/*/* |grep ^- |awk '{print $9}'
但如何扩展它以显示当前目录中存在的所有文件以及级别 3。我不必使用 find。
答案1
你可以利用 shell 通配符和( )for
的帮助来构造:test
[
for f in * */*/*; do [ -f "$f" ] && echo "$f"; done
* */*/*
匹配当前目录(*
)和第三级(*/*/*
)中的所有文件和目录[ -f "$f" ]
检查它是否是一个文件,如果是,则打印文件名 (echo "$f"
)
答案2
Perl 版本:
perl -E 'say for(grep {-f } <*>, <*/*/*>)'
或者
perl -E 'map {say if -f} <*>, <*/*/*>'
答案3
这是一个可能的解决方案:没有find的单个命令
tree -fiF | grep -E -e '^./[[:alnum:]]+/[[:alnum:]]+/[[:alnum:]]+/[[:alnum:]]+$' -e '^./[[:alnum:]]+$'