ファイル名の日付とサイズのみを表示するLinux ls


72

lsLinuxでファイル名の日付とサイズのみのリストを取得するにはどうすればよいですか?所有者や許可などの他の情報を見る必要はありません。これは可能ですか?


1
ls日時によるソートが非常に高速であるため素晴らしいですが、フォーマットは扱いにくいです。--time-style='+&%Y%m%d+%H%M%S.%N'トークンが '&'のような--time-styleでトークンを使用することをお勧めします。これを参照として使用すると、出力をさらに解析sedでき、トークンがサイズになる直前に戻ることができます!誰かがそれを完全な回答として投稿したい場合は、お気軽に、私は今あまりにも眠っています:)
Aquarius Power

回答:


98

stat代わりに使用しないのはなぜlsですか?

stat -c "%y %s %n" *

1
これは便利ですが、「環境が大きすぎる」/「引数リストが長すぎる」という問題が潜在的にあります。
マット

4
:-)単なる概念の証明。Real Life [tm]では、これはfind . -type f -print0 | xargs -0 stat -c "%y %s %n"
f4m8

5
の出力をフォーマットするにはstat、Cのprintf関数などのフォーマット文字列に情報を追加します。たとえば"%y %8s %n"、ドキュメント化されていませんが、機能しているようです(coreutils 8.17、Fedora 18)
LiuYan刘研

なぜなら、ls私は千の区切り文字で出力できるからです。どのように動作しstatますか?
アル・バンディ

これがどのように質問に答えているかわかりませんか?!すぐに使える優れたソリューションですが、からすべてのメリットを失いますls。色はどうですか??
MS Berends

30

findユーティリティを使用してファイルを一覧表示する方法について、多くの制御を取得できます。ls必要な列を実際に指定することはできません。

例えば:

$ find . -maxdepth 1 -printf '%CY%Cm%Cd.%CH%CM\t%s\t%f\n'
20111007.0601   4096    .
20111007.0601   2   b
20111001.1322   4096    a

printfアクションへの引数は、マンページに詳細があります。さまざまな時間情報、必要なサイズ(使用されているファイルサイズまたはディスクブロック)などを選択できます。さらに処理が必要な場合は、通常とは異なるファイル名に対してこれを安全にすることもできます。


1
上記の検索入力( '%CY%Cm%Cd。%C ...')は長いです。少なくともGNU findは%C+(出力 "2016-08-29 + 10:57:56.9201257840")および%Cc(出力 "Mo 29 Aug 2016 10:57:56 CEST")
guettli

これがMacで機能することを願っています。
ジェリノー

素敵な、そしてあなただけの完全なパスとサイズを印刷する場合、これは「見つける/パス/に/ -printf 『%hを/%F%sの\ n』の」動作するはずです
ピエルルイジVernetto

24

1awkの出力をフォーマットするなどの別のユーティリティを常に使用できます。ls

/bin/ls -ls | awk '{print $7,$8,$9}'


1.はい、一般的に、lsの出力を解析するべきではありませんが、この場合、質問は具体的にそれを要求します...


ただし、ファイルサイズは出力されません。また、ファイル名の最初の部分のみを出力します。lsエイリアスされている場合は失敗します(たとえばalias ls='ls -i')。ls出力の解析に取りかかりたい場合は、本当に多くの注意を払う必要があります。
マット

そこにファイルサイズを入れてから編集しました(あいまいな瞬間)-復元します。そしてls、構文解析に関するすべての警告については同意しますが、それがOPが望んだことです
...-jasonwryan

ファイル名に空白が含まれている場合、OPはファイル名の最初の部分ではなくファイル名を必要としていることに同意しません。(使用すると/bin/ls、エイリアスの問題を避けるだろう。)
マット

それは暗黙的に理解されます:明示的に述べられているのは、OPがls私たち両方が空白の要件を満たさないことに同意する解決策を望んでいるということです。/bin/ls提案は良いものです。
jasonwryan

このソリューションが大好きです。サイズを印刷しないという以前のコメントに関しては、lsを使用-hしてサイズを取得し、人間が判読できるようにするために使用できます。具体的に私が使用: ls -lah | awk '{print $5,$6,$7,$8}'得ています: 4.0K Jan 24 18:17。確かに、元のソリューションはawkについて何も述べていませんが、Linuxでは、プロセスの出力は常に別のプロセスへの入力であると想定する必要があります。;)
abgordon

5

「date」コマンドを使用することもできます。使い方はとても簡単です:

date -r [ファイル名]


いいですね、これは私にとって初めてでした。残念ながら、date -r foo*.txtdate: extra operand "foo2.txt"
グロビング

4

lsを使用したいが、適切なサイズを保持したい場合は、次を使用できます。

ls -Ss1pq --block-size=1

1

ここで、スペースはセパレータとして定義され、f6はフィールド6を意味します

ls -lt | cut -d" " -f6-

2
LSはインデントにスペースを使用しているため、それが失敗し、時にはそれが- [5-ある-f6-以外の時間である
アクエリアス電源

1

2つのコマンドをパイプライン処理できます

ls -l|cut -d" " -f5

1
LSはインデントにスペースを使用しているため、それが失敗し、時にはそれが- [5-ある-f6-以外の時間である
アクエリアス電源

-1

ls -s1はAIXでのみファイルサイズと名前を返します。Linuxについてわかりません


2
これがどのように/なぜあなたが質問に答えると思うか説明できますか?
スコット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.