web-dev-qa-db-ja.com

ファイルサイズに基づいてls出力をフィルタリングします

ファイルサイズに基づいてlsコマンドの出力をフィルタリングしたいと思います。 100KBを超える.jpgまたは.pngファイルはすべて出力で報告する必要があります。

.png/.jpgファイルをフィルタリングすることはできましたが、100KB未満のファイルを破棄することはできません。

これが私が現在使用しているものです:

ls -lah | grep '.png\|.jpg'

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

5
smokinguns

他の人が示唆しているように、findを使用すると、指定したサイズ範囲のファイルを見つけることができます。ただし、Findは各ファイルへのパスのみを出力します。また、それ以上の修飾がない場合、findは、現在のディレクトリおよび現在のディレクトリの下のすべてのディレクトリにあるすべてのファイルを検索します。以下は、現在のディレクトリのみを検索し、lsを使用して結果を表示します。

find . -maxdepth 1 -size +200 \( -name \*.png -o -name \*.jpg \) -print | xargs ls -ldh

サイズはブロック単位であることに注意してください。ブロックは、常に512バイトではないにしても多くの場合です。

3
garyjohn

findを使用してこれを行うことができます。

find . -type f -size +100k | grep '.png\|.jpg'

どこ +100kはサイズをKBで指定します。つまり、これより大きいファイルのみを出力する必要があります。 findには、他にもいくつかの便利なオプションがあります。たとえば、一定時間前に作成されたファイルのみを一覧表示します。見る man find 詳細については。

上記は次のように書き直すこともできます

find . -type f -size +100k -name "*.png" -o -name "*.jpg"
4
slhck

findの代わりにlsを使用します。

find . -type f -size +100k \( -name \*.png -or -name \*.jpg \)
3
Florian Diesch

Duを使用する

du -a --apparent-size -t +100k | grep '.png\|.jpg'
0
Ferroao