web-dev-qa-db-ja.com

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

ls -latは、ファイルに含まれるバイト数を調べ、8を掛けてビット数を調べます。しかし、これは1つのコマンドラインでのみ可能ですか?

9
Felipe

GNU du

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

シェル+ 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) ))
5
John1024

GNU find(predates GNU stat by decimals))の場合:

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

比較的移植性が高い:

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

たとえば、パイプまたはコマンド置換によって接続されます:

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

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

3
choroba

単一ファイル:

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

複数のファイル:

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

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

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

2
Totor