
クエリを使用しないでくださいそして単一コマンド:PWDおよび3番目のレベルディレクトリに存在するすべてのファイル名を表示します。
レベル3のすべてのファイルを表示するための不都合な解決策があります。
ls -l ./*/*/* |grep ^- |awk '{print $9}'| grep -E ^./\(.*/\){2}
または
ls -ld ./*/*/* |grep ^- |awk '{print $9}'
しかし、現在のディレクトリとレベル3のすべてのファイルを表示するように拡張するにはどうすればよいですか?検索を使用する必要はありません。
答え1
シェルワイルドカードとfor
()の助けを借りて、以下を設定できます。test
[
for f in * */*/*; do [ -f "$f" ] && echo "$f"; done
* */*/*
*
現在のディレクトリ()と3番目のレベル()*/*/*
のすべてのファイルとディレクトリと一致します。[ -f "$f" ]
ファイルであることを確認し、その場合はファイル名(echo "$f"
)を出力してください。
答え2
パールバージョン:
perl -E 'say for(grep {-f } <*>, <*/*/*>)'
または
perl -E 'map {say if -f} <*>, <*/*/*>'
答え3
考えられる解決策は次のとおりです。単一のコマンドが見つかりません。
tree -fiF | grep -E -e '^./[[:alnum:]]+/[[:alnum:]]+/[[:alnum:]]+/[[:alnum:]]+$' -e '^./[[:alnum:]]+$'