2017-12-14 5 views
1

lsコマンドを使ってディレクトリ内のファイルを出力したいのですが、ファイルサイズがバイト単位で必要です。Bash - サイズがバイト単位のファイルをリストする方法

これはlsコマンドで可能ですか?

私はこのls -l --block-size=Mを見つけましたが、ファイルサイズはメガバイト単位で出力されていますが、単なるバイトでは動作しないようです。

+0

'--block-size'ずにどうなりますか? –

+0

@JoshLee私はばかです。バイト単位の出力を実現しました。他の情報なしで単にバイトとファイル名を出力する方法はありますか? –

+0

http://mywiki.wooledge.org/ParsingLs –

答えて

5

あなたはファイルに関する統計情報を探しているなら、あなたはむしろlsよりもstatを使用します。例えば:私のls (GNU coreutils) 8.26オン

stat --format=%n:%s * 
+0

この回答をGNUismとして指定することがあります。 (GNU 'stat'やGNU' find'、そしてPerlインタプリタのようなものでないなら、*余分なツールを必要としない*良い答えではあまり利用できません。 –

+0

... 'wc -c <" $ file "'おそらくポータブルで丈夫な方法でファイルの長さを取得できますが、驚くほど悪い実装の 'wc'実際のファイルのハンドルを渡したときに 'stat()'か 'seek()'と 'tell()'を組み合わせる方法を知っていません。 –

-1
ls -l | tr -s " " | cut -d " " -f5,9- 
tr -s " "

つのスペースで順次複数のスペースを置き換える

cut -d " " -f5,9-空間に区切り文字を設定し、以降のフィールド5,9を印刷します。 9番目以降はファイル名にスペースが含まれている可能性があり、フィールド9を印刷するだけです。最初の単語を取得します

ボーナス:出力順序($ filename $ bytes)を変更する場合は、

| sed 's_\([0-9]*\) \(.*\)_\2 \1_'

+1

の「ls」出力[解析するのは安全ではありません](http://mywiki.wooledge.org/ParsingLs)の「ファイルのメタデータの取得」のセクションを参照してください。 GNUツールを使用している場合は、 'find -printf'が明示的なフォーマット文字列を渡すことを検討してください。 –

+0

@CharlesDuffy良い点 – TCulp

0
$ ls -l foo.tar.gz 
-rw-r--r-- 1 tex tex 68964464 Mar 12 2014 xfer.tar.gz 

を:

$ ls -s --block-size=1 xfer.tar.gz 
68972544 foo.tar.gz 
関連する問題