1行のコマンドを使用して、指定された各ディレクトリ(またはサブディレクトリ)を見つけて、bin
その下のすべてのファイルのリストを印刷しようとしています。ただし、その下にあるディレクトリ名も印刷しません。
これを達成するためにいくつかの異なる方法を試しましたが、これまで何も効果がありませんでした。
find ~ -type d -name "bin" -exec ls '{}' ';' | grep -v /
これをテストしましたが、ファイルが一覧表示されましたが、binの下のすべてのディレクトリも一覧表示されました。したがって、私のディレクトリの下に次のサブディレクトリがある場合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
。..
.
ではどうすればいいですか?
答え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回の呼び出しを置き換えるので、ls
2回目の呼び出し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
:見つかった各ファイルのサイズを取得するコマンドを実行します。コマンドが終了すると、+
複数のファイルが一度に渡され、呼び出し回数が減り、パフォーマンスが向上します。du
du
sort -rh
:出力を人間が読める形式(-h
)と逆順(-r
)でサイズで並べ替えるので、最大のファイルが一番上に表示されます。