find を使用してディレクトリ内のすべてのファイルを一覧表示します。

find を使用してディレクトリ内のすべてのファイルを一覧表示します。

1行のコマンドを使用して、指定された各ディレクトリ(またはサブディレクトリ)を見つけて、binその下のすべてのファイルのリストを印刷しようとしています。ただし、その下にあるディレクトリ名も印刷しません。

これを達成するためにいくつかの異なる方法を試しましたが、これまで何も効果がありませんでした。

  1. find ~ -type d -name "bin" -exec ls '{}' ';' | grep -v /

これをテストしましたが、ファイルが一覧表示されましたが、binの下のすべてのディレクトリも一覧表示されました。したがって、私のディレクトリの下に次のサブディレクトリがある場合binbin

~/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...

ではどうすればいいですか?

答え1

を使用するには、-path以下を試してください。

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

これはそれ自体リストされていないので、両方をbin取得するには、次の手順を実行します。

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

答え2

find呼び出しを入れ子にすることでこれを行うことができます。

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

1回の呼び出しを置き換えるので、ls2回目の呼び出しfindで複数のリストを一覧表示したくない場合があります。この場合、上記の。-maxdepth 1後ろに追加してください-type f

答え3

find ~ -type f -size +10M -exec du -sh {} + | sort -rh
  • find ~:ファイルを検索するディレクトリを指定します(~この例では)。
  • -type f:これにより、ディレクトリではなく通常のファイルのみが考慮されます。
  • -size +10M:検索するファイルの最小サイズを指定します(この場合は10 MB以上)。
  • -exec du -sh {} +du -sh:見つかった各ファイルのサイズを取得するコマンドを実行します。コマンドが終了すると、+複数のファイルが一度に渡され、呼び出し回数が減り、パフォーマンスが向上します。dudu
  • sort -rh:出力を人間が読める形式(-h)と逆順(-r)でサイズで並べ替えるので、最大のファイルが一番上に表示されます。

関連情報