1つのコマンドでファイルのビット数を確認するにはどうすればよいですか?


9

ls -latファイルに含まれるバイト数を調べるために使用し、8ビットを乗算してビット数を調べることができることはわかっています。しかし、これは1つのコマンドラインでのみ可能ですか?


5
私はそうは思いません。また、そのような機能の実用的な使い方も見当たらない^^
Martin von Wittich、2014年

1
@MartinvonWittich-インターネット速度は、しばしば「ビット /秒」で行われます...
Wilf

4
@wilf:マイナスのプロトコルオーバーヘッド。
Ignacio Vazquez-Abrams 2014年

私の場合、私はこのスーツテストを使用しています。csrc.nist.gov / groups / ST / toolkit / rng / documentation_software.htmlで、パラメーターは分析するビット数です。
フェリペ

回答:


15

GNUの場合du

du -b FILE | awk '{ print $1, "* 8" }' | bc

9
それを必要としないことを除いてbc- awk数学自体を行うことができます:du -b FILE | awk '{print $1 * 8}
aragaer 2014年

参照してくださいwc -c < FILEポータブル同等のための(非正規のファイルについて、それはしかし、それらを読んでの副作用があります)
ステファンChazelas

5

シェル+ GNU coreutilsソリューション:

echo $(( 8 * $(stat -c%s FILE) ))

-c%sオプションstat追加のテキスト処理の必要性を排除バイト単位で単にファイルサイズ、戻ります。この構文はGNU coreutilsでサポートされているため、ほとんどのLinuxディストリビューションで機能するはずです。

Linuxの例外として、オプションのzsh / statモジュールを使用してzshを実行している場合は、GNU coreutilsを取得するためのパスを指定する必要があります。

echo $(( 8 * $(command stat -c%s FILE) ))

@StephaneChazelas情報ありがとうございます。回答を更新しました。
John1024 2014年

良い説明のようです、ありがとう。しかし、私のテストでは、このコマンドが私に返されました:title:7:不正な数式: `%s 'で期待されるオペランド] 2; echo 4096000 ----答えは4096000ですが、他のエラーは何ですか?
フェリペ

@FelipeMicaroniLalliそのエラーを再現することはできません。また、(a)そのエラーメッセージを表示すると同時に、(b)正しい数値の回答を返すような状況はありません。奇妙な。
John1024 2014年

3

GNUの場合find(GNU statより数十年前):

find file -prune -printf '%s*8\n' | bc

比較的移植性が高い:

ls -ld -- "$file" | awk '{print $5*8;exit}'

3

たとえば、パイプまたはコマンド置換によって接続された1行に複数のコマンドを置くことができるため、1行で可能です。

echo $(stat -c %s FILE) '* 8' | bc

(更新をありがとう@frostschutz)。


私にとっては魅力のように働きました。➜tmp stat random-file-3 | sed -n 's / Size:([0-9] *)。* / \ 1 * 8 / p' | bc➜4096000-
フェリペ

英語以外のロケールで、非GNUシステム上またはと呼ばれるファイルでは動作しませんZSize: 5例えば
ステファンChazelas

1
stat -c %s FILEではなく、直接サイズを印刷する方法はsed
frostschutz 2014年

2

単一ファイル:

wc -c yourfile | awk '{print $1*8}'

複数のファイル:

wc -c yourfile1 yourfile2 | awk '{$1*=8; print $0}'

これは単一のファイルでも機能します。ただし、完全に防弾ではありません。Stephaneのコメントを参照してください。

これらはPOSIX標準に準拠したコマンドです。


すごい。驚くばかり。➜tmp wc -cランダムファイル1ランダムファイル2ランダムファイル3 | awk '{$ 1 * = 8; print $ 0} '328 32832 random-file-1➜49152 random-file-2➜4096000 random-file-3➜4177984合計
Felipe

1
ファイルが通常のファイルでない場合は、副作用があることに注意してください。2つ目は、a    bファイルをa b(空白のシーケンスが単一のスペースに変換され、末尾の空白が削除された)として表示します。
ステファンChazelas

@StephaneChazelasに、どのような非正規ファイルを試してみましたか?
Totor

任意のタイプ(FIFO、ソケット、ドア、デバイス、ディレクトリ...)。改行文字を含むファイル名にも問題があります。あなたは追加することができますNR == 1
ステファンChazelas
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.