显示 PWD 和第 3 级目录中存在的所有文件名

显示 PWD 和第 3 级目录中存在的所有文件名

不使用查找单命令:显示 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:]]+$'

相关内容