bin
という名前のすべてのディレクトリ(またはサブディレクトリ)を検索し、その下のすべてのファイルのリストを出力しますが、その下のディレクトリ名もリストしない単一行コマンドを使用しようとしていますそれら。
私はこれを達成するためにいくつかの異なることを試みましたが、これまでのところどれもうまくいきませんでした:
find ~ -type d -name "bin" -exec ls '{}' ';' | grep -v /
私はこれをテストしました、そしてそれはファイルをリストします、しかしそれはそこにあるどんなビンの下のディレクトリもリストします。したがって、次のようなbin
ディレクトリの下にbin
サブディレクトリがあるとします。
~/home/
~/home/bin
file1.txt
~/home/bin/bin
file2.txt
出力は次のようになります。
bin
file1.txt
file2.txt
find ~ -type d -name "bin" -exec ls -f '{}' ';'
ls -f
を実行するとファイルのみが一覧表示されると読みましたが、これには残念ながらディレクトリbin
、..
、.
も一覧表示されます
どうすればこれを行うことができますか?
-path
、あなたは試すことができます:
find ~ -path '*/bin/*' -type f
これはbin
自体をリストしないため、両方を取得します。
find ~ \( -path '*/bin/*' -type f \) -o \( -name bin -type d \)
ネストされたfind
呼び出しでこれを行うことができます:
$ find ~ -type d -name bin -exec find '{}' -type f ';'
私はls
の呼び出しを置き換えているため、2番目のfind
の呼び出しで複数のレベルのリストが必要であるとは思わないでしょう。その場合は、-maxdepth 1
後-type f
上記。