$ ls -l
drwsrwsrwt 2 caine caine 4096 2017-01-10 13:21 10050
-rw-r--r-- 10 caine caine 4096 2017-01-19 11:29 10051
drwxr-xr-x 20 caine 18 8096 2017-01-19 11:29 10052
drwxr-xr-x 21 11 caine 4096 2017-01-19 11:29 10053
drwxr-xr-x 22 caine 22 4096 2017-01-19 11:29 10054
-rw-r--r-- 14 caine caine 50 2017-01-19 11:29 10055
上記に基づいて、どのファイルサイズが最大であるかをどうやって知ることができますか?答えは10051と聞きましたが、なぜそうなのかわかりません。上記の情報に基づいて、どのファイルが最大であるかを判断するために使用できる具体的な方法はありますか?
答え1
ls -l
出力7列:タイプと権限、リンク数、所有者、グループ、サイズ、変更時間と名前。 (この情報は情報ページのGNU lsについて文書化されています。これを確認し、メニューから「What information is listed(どの情報がリストされているか)」を選択し、下にスクロールしてにinfo ls
進みます-l
。info ls 'long ls format'
移動する必要があります。)
したがって、最初の列(タイプと権限)を見ると、最初の文字は型、つまりディレクトリの種類と一般的なd
ファイル-
を伝えます。したがって、10051と10055という2つのファイルしかありません。次に、5番目の列(サイズ)を見ると、1つは4096バイト、もう1つは50バイトです。どちらが大きいかはっきりしています。
もちろん、これらのすべてのディレクトリにはかなりの数のファイルを含めることができ、これらのファイルの合計サイズは大きくなる可能性があります。ls
ディレクトリ自体のサイズを表示します(考えてみると「ディレクトリの内容」はデータなのでどこかに保存する必要がありますが、Unixでは名前ファイル数は、内容ではなくディレクトリの一部として保存されます。つまり、ディレクトリ自体(10052)が大きくなります。
含まれているファイルやサブディレクトリを含むディレクトリのサイズを(繰り返し)知りたい場合は、du
このコマンドを使用できます。
答え2
# /bin/ls -1sSr | tail -1
サイズに基づいてリストを並べ替え、リストの最後に最大の項目のみを表示します。
答え3
Linuxに言及したので、GNU Coreutilsバージョンのls
。
私たちが知っている限りinfo ls
、ls -l
出力は
"...ファイルの種類、ファイルモードビット、ハードリンク数、所有者名、グループ名、サイズとタイムスタンプ(*ファイルのタイムスタンプの種類注::)、通常変更時間。
したがって、5番目の列を見るとファイルサイズです。もちろんls -l
withawk
や他のツールの出力を解析することはできますが、1)lsを解析するのは悪い考えです。と2)GNU lsにはデバイスを表すファイルサイズはありません。。
したがって、私は選択肢をお勧めします:
$ find -maxdepth 1 -type f -exec du -b {} \; | sort -k1,1 -n | tail -n 1
これにより、ファイルがフィルタリングされ、du
各ファイルに対して実行され、出力が数値でソートされます。最後の行が最大のファイルです。
答え4
du
次のコマンドを使用できます。
du -a $PWD | sort -n -r
最初の出力は作業ディレクトリです。