ls
Linuxで名前、日付、サイズのみを含むファイルのリストを取得するには?所有者や権限などの他の情報を表示する必要はありません。
可能ですか?
答え1
stat
代わりに試してみてくださいls
。これはGNU実装ですstat
(BSDとzshにもstat
コマンドがありますが、APIはまったく異なります)。
stat -c "%y %s %n" -- *
列形式で出力します(すべてのファイル名にコンマや改行が含まれていないと仮定)。
stat -c "%n,%s" -- * | column -t -s,
-
現在の作業ディレクトリからファイルが呼び出されると、GNUはそのファイルでstat
はなくstdinで開いているファイルに関する情報を報告します。
会ったらArgument list too long
エラーが埋め込まれたシェルの場合は、printf
次のように変更できます。
printf '%s\0' * | xargs -0 stat -c "%y %s %n" --
またはksh93から:
command -x stat -c "%y %s %n" -- *
stat
パラメータサイズの制限を解決するために、できるだけ多くの呼び出しを実行してください。
答え2
1出力書式設定など、他のユーティリティをいつでも使用できますawk
。ls
/bin/ls -ls | awk '{print $7,$8,$9}'
1.はい、一般的に言うと、lsの出力を解析しないでください。しかし、この場合は質問で特に求める事項です。
答え3
このユーティリティのGNU実装により、ファイルの一覧表示方法を大量に制御できますfind
。 GNUでは、ls
実際に希望の列を指定することはできません。
たとえば、
$ find . -mindepth 1 -maxdepth 1 -printf '%CY%Cm%Cd.%CH%CM\t%s\t%f\n'
20111007.0601 2 b
20111001.1322 4096 a
この操作のパラメータについては、printf
マニュアルページに詳しく説明されています。さまざまな時間情報、必要なサイズ(ファイルサイズ、または使用されているディスクブロック)などを選択できます。さらに処理が必要な場合は、異常なファイル名に対してこの操作が安全であることを確認することもできます。
答え4
lsを使用したいのですが、適切なサイズを維持するには、次のものを使用できます。
ls -Ss1pq --block-size=1