web-dev-qa-db-ja.com

検索を使用して特定のディレクトリの下にあるすべてのファイルを一覧表示する

binという名前のすべてのディレクトリ(またはサブディレクトリ)を検索し、その下のすべてのファイルのリストを出力しますが、その下のディレクトリ名もリストしない単一行コマンドを使用しようとしていますそれら。

私はこれを達成するためにいくつかの異なることを試みましたが、これまでのところどれもうまくいきませんでした:

  1. 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
  1. find ~ -type d -name "bin" -exec ls -f '{}' ';'

ls -fを実行するとファイルのみが一覧表示されると読みましたが、これには残念ながらディレクトリbin...も一覧表示されます

どうすればこれを行うことができますか?

6
Alex

-path、あなたは試すことができます:

find ~ -path '*/bin/*' -type f

これはbin自体をリストしないため、両方を取得します。

find ~ \( -path '*/bin/*' -type f \) -o \( -name bin -type d \)
9
muru

ネストされたfind呼び出しでこれを行うことができます:

$ find ~ -type d -name bin -exec find '{}' -type f ';'

私はlsの呼び出しを置き換えているため、2番目のfindの呼び出しで複数のレベルのリストが必要であるとは思わないでしょう。その場合は、-maxdepth 1-type f上記。

3
Warren Young