ファイルサイズに基づいてls
コマンドの出力をフィルタリングしたいと思います。 100KBを超える.jpgまたは.pngファイルはすべて出力で報告する必要があります。
.png/.jpgファイルをフィルタリングすることはできましたが、100KB未満のファイルを破棄することはできません。
これが私が現在使用しているものです:
ls -lah | grep '.png\|.jpg'
どうすればこれを行うことができますか?
他の人が示唆しているように、find
を使用すると、指定したサイズ範囲のファイルを見つけることができます。ただし、Find
は各ファイルへのパスのみを出力します。また、それ以上の修飾がない場合、find
は、現在のディレクトリおよび現在のディレクトリの下のすべてのディレクトリにあるすべてのファイルを検索します。以下は、現在のディレクトリのみを検索し、ls
を使用して結果を表示します。
find . -maxdepth 1 -size +200 \( -name \*.png -o -name \*.jpg \) -print | xargs ls -ldh
サイズはブロック単位であることに注意してください。ブロックは、常に512バイトではないにしても多くの場合です。
find
を使用してこれを行うことができます。
find . -type f -size +100k | grep '.png\|.jpg'
どこ +100k
はサイズをKBで指定します。つまり、これより大きいファイルのみを出力する必要があります。 find
には、他にもいくつかの便利なオプションがあります。たとえば、一定時間前に作成されたファイルのみを一覧表示します。見る man find
詳細については。
上記は次のように書き直すこともできます
find . -type f -size +100k -name "*.png" -o -name "*.jpg"
find
の代わりにls
を使用します。
find . -type f -size +100k \( -name \*.png -or -name \*.jpg \)
Duを使用する
du -a --apparent-size -t +100k | grep '.png\|.jpg'