web-dev-qa-db-ja.com

{size}より大きいファイルを日付順に並べる

「現在のディレクトリで20MBを超える最新のファイルをトップ10にリストする」という問題を解決したいと思います。

lsを使用すると、次のことができます。

ls -Shal |head

トップ10の最大ファイルを取得し、

ls -halt |head

最新のトップ10ファイルを取得する

Findでできること:

find . -size +20M

現在のディレクトリ(およびサブディレクトリ)にある20MBを超えるすべてのファイルを一覧表示する場合。

できればlsを使用して、特定のサイズを超える最新の上位10ファイルを一覧表示する方法はありますか?

29
EoghanM

findの「現在のディレクトリ」オプションは-maxdepth 1。必要なコマンドライン全体は次のとおりです。

find . -maxdepth 1 -type f -size +20M -print0 | xargs -0 ls -Shal | head

または

find . -maxdepth 1 -type f -size +20M -print0 | xargs -0 ls -halt | head
25
Rajish

注:これはGNU-findで機能しますが、他のすべての機能ではありません。

find . -maxdepth 1 -size +20M -printf "%T@ %f\n" | 
    sort -nr | head -n 20 | sed 's/[^ ]\+ //'

@Rajishに似ていますが、printfからfindコマンドを使用して出力形式を指定します。時間に関連する3つの形式がありますatime、ctimeおよびmtime-%Tはmtime、%Aおよび%Cは他のフォーマット用です。

@は、エポック以降の時間形式を秒単位で指定します。 %fはファイル名、\n 2つのファイル間の改行。

次に、番号で逆順に並べ替えると、最も新しいファイルが最初に表示され、headを使用して20行20が取得されます。

最後に、sedを使用して、時間情報を破棄します。

¹)headは1行ずつ機能するため、名前に20を超える改行が含まれる単一のファイルは少し珍しいですが、禁止されていません。そのようなファイルがある場合は、それらを削除してみてください-まあ、それらの名前を変更してください。単純なスクリプトの場合、問題になることがよくあります。

8
user unknown

Zshの glob qualifiers はこれを簡単にします。 .修飾子は通常のファイルのみを選択し、Lm+20は少なくとも20MBに1バイト長のファイルを選択します。ちょうど20MBの長さのファイルを含めるには、L+20971519を使用します。次に、omは変更時間を減らして並べ替え、[1,10]は最初の10個の一致に展開を制限します。日付順にファイルを一覧表示する場合は、ls-tオプションが必要です。または、他のコマンドにファイルを渡すことができます(最年少が最初)。最も古いファイルを最初に使用してファイルを別のコマンドに渡すには、Omを使用して変更時間を増やして並べ替え、[-10,-1]を使用して最後の10件の一致を抽出します。

ls -ltr -- *(.Lm+20om[1,10])
echo *(.Lm+20Om[-10,-1])

これは問題を解決するためのより良い方法かもしれないと思います...

find . -maxdepth 1 -type f -size +20M -exec ls -Shal {} \+ | head

Findが読み取り権限のないファイルにアクセスしようとしたときにエラーを取り除くには、追加したい場合があります

find . -maxdepth 1 -type f -size +20M -exec ls -Shal {} \+ 2> /dev/null | head 
2

これは、ファイル名に埋め込まれた改行文字に関係なく、指定された10個のファイルのみを印刷します。ファイルシステムを使用しますinodes

cd "$1"
for i in $(find . -maxdepth 1 -type f -size +20M -printf "%T@\t%i\n" \ 
           | sort -nr | head | cut -f 2)
do
  ls -l "$(find . -inum $i)"
done
1
Peter.O

すべての回答をありがとう。私が行ったことは次のとおりです:

ls -halt | grep "M " |head

20メガバイトを無視して1メガバイト以上(ギガバイト未満)を優先しますが、人間が読めるファイルサイズの要素を簡単に覚えて保存することができます。

0
EoghanM