現在のディレクトリとそのサブディレクトリにある10kバイトを超えるすべてのファイルを表示するにはどうすればよいですか。
試しls -size +10k
ましたが、うまくいきませんでした。
find . -size +10k -exec ls -lh {} \+
これの最初の部分は@sputnicksの回答と同じであり、ディレクトリ内の10kを超えるすべてのファイルを正常に検索します(kとKを混同しないでください)。さらに、2番目の部分は実行ls -lh
されるか、ファイルを一覧表示(-l)します。人間が読めるサイズ(-h)。必要に応じてhを否定します。もちろん、これ{}
はファイル自体であり、これ\+
は単に次の代替手段です。\;
実際にはこれ\;
が繰り返されるか、次のようになります。
ls -l found.file; ls -l found.file.2; ls -l found.file.3
\+
1つのステートメントとして表示する場所または:
ls -l found.file found.file.2 found.file.3
詳細\; vs + withfind
さらに、サイズ順にリストを並べ替えることもできます。これは比較的簡単に実行できます。私は-s
オプションls
でそうするでしょう、ls -ls
そしてそれからそれをパイプしてsort -n
数値的にソートします
これは次のようになります:
find . -size +10k -exec ls -ls {} \+ | sort -n
または逆の順序で-rを追加します:
find . -size +10k -exec ls -ls {} \+ | sort -nr
最後に、タイトルには、ディレクトリで最大のファイルを見つけると書かれています。次に、コードをにパイプすることでそれを行うことができますtail
find . -size +10k -exec ls -ls {} \+ | sort -n | tail -1
ディレクトリとそのサブディレクトリで最大のファイルが見つかります。
-Sを使用してファイルをサイズで並べ替えることもでき、並べ替えの必要性をなくすことができます。しかし、最大のファイルを見つけるには、headを使用する必要があります。
find . -size +10k -exec ls -lS {} \+ | head -1
-Sを使用して実行することの利点は、sort
1つではなく、入力する必要がなく、2つを使用して人間が読めるサイズのオプションsort -n
を使用することもできます。-h
これは私のお気に入りの1つですが、古いバージョンでは使用できませんls
。たとえば、古いcentOs4サーバーが稼働しています。-h
これを試してみてください:
find . -size +10k -ls
そして、バイナリを使用したい場合ls
:
find . -size +10k -exec ls -l {} \;
私は、割り当てがおそらく長い間終わっていることを理解しています。他の人のために:
あなたは複雑すぎます。
find . -size +10k
@matchewの回答に追加します(コメントするのに十分なカルマポイントがありません):
find . -size +10k -type f -maxdepth 1 -exec ls -lh {} \; > myLogFile.txt
-type f:通常のファイルタイプを指定します
-maxdepth 1:現在のディレクトリ内のファイルのみが検索されるようにします
次のようなlsを使用できます。
ls -lR | egrep -v '^d' | awk '$5>10240{print}'
説明:
ls -lR # list recursivly
egrep -v '^d' # only print lines which do not start with a 'd'. (files)
5番目の列(サイズ)が10240バイトより大きい行のみを印刷します。
awk '$5>10240{print}'