Linuxls
コマンドにはこれらのオプションがあります。
--block-size=SIZE
scale sizes by SIZE before printing them; e.g., '--block-size=M' prints sizes in units of 1,048,576 bytes; see
SIZE format below
-l use a long listing format
list subdirectories recursively
-s, --size
print the allocated size of each file, in blocks
私はこれがls -l
実際のファイルサイズとls -s --block-size=1
ファイルを保存するために割り当てられたディスク容量の量であると仮定します。 (この例では、991232 = 968x1024 = 968Kです。)
$ ls -s --block-size=1 summary.pdf
991232 summary.pdf
$ ls -l summary.pdf
-rwxrwx---. 1 chris chris 989838 May 1 2015 summary.pdf
「長いリスト形式」では、追加情報なしでファイルサイズをバイト単位で取得できますか?
答え1
カスタムフォーマットを使用できますstat
。
stat -c'%s' summary.pdf
実際のファイルサイズ(バイト)が出力されます。ブロックを割り当てるには、%b
割り当てられたブロック数と%B
各ブロックのブロックサイズ(バイト単位)を使用します。
これはワイルドカードと追加されたファイル名にも適用されます%n
。その他の書式設定オプションについては、マニュアルページを参照してください。
答え2
ls
サイズとファイル名のみを表示する代替形式が必要な場合は、この方法を使用できます。
ls -l | sed "s/ */ /g" | cut -d ' ' -f 5,9-
または:
alias size_plus_name="sed 's/ */ /g' | cut -d ' ' -f 5,9-"
ls -l | size_plus_name
ls
スイッチまたはコマンドライン引数にこの方法を使用してください。を含めることを忘れないでください-l
。
注目!ファイル名にスペースが含まれていない場合にのみ有効です。
しかし、5-9-
(代わりに5-9
)wspを含むファイル名を処理しようとしています。
(下記@Scottのコメントを参照)
答え3
du
*をファイル名に変更します。
du -s -B 1 *
du -s -B 1 * | cut -f 1
stat
ディレクトリ以外は他と同じです。du
再帰サイズが報告されます(例:99999)、stat
4096、またはブロックサイズが報告されます。
find
また有効:stat
find * -maxdepth 1 -printf "%s\n"
%p File's name.
%s File's size in bytes.
%f Print the basename; the file's name with any leading directories removed