1. ホーム
  2. linux

[解決済み] シェルでファイルサイズ(バイト)を取得するポータブルな方法

2022-06-24 23:44:40

質問

Linuxで、私は stat --format="%s" FILE を使いますが ソラリス のマシンにアクセスしても stat コマンドはありません。では、何を使えばいいのでしょうか?

私はBashスクリプトを書いていて、システムに新しいソフトウェアをインストールすることができません。

すでに使用することを検討したことがあります。

perl -e '@x=stat(shift);print $x[7]' FILE

とかでもいい。

ls -nl FILE | awk '{print $5}'

しかし、これらはどちらも賢明ではありません。 パール を実行することでしょうか?あるいは、同じことをするために 2 つのプログラムを実行するのでしょうか?

どのように解決するには?

wc -c < filename (語数の略。 -c はバイト数を表示) はポータブルです。 POSIX のソリューションです。いくつかのスペースが先頭に置かれることがあるため (Solaris の場合)、出力形式だけがプラットフォーム間で統一されていない可能性があります。

入力リダイレクトを省略しない。引数としてファイルが渡された場合、バイト数の後にファイル名が表示されます。

バイナリファイルで動くかどうか心配でしたが、LinuxでもSolarisでも問題なく動きます。で試してみてください。 wc -c < /usr/bin/wc . さらに、POSIXユーティリティは バイナリファイルを扱うことが保証されています。 であり、明示的に指定されない限り、バイナリファイルを扱うことが保証されています。