実現したいこと
サーバ内の以下の情報を1コマンドで取得したい
- 各ファイルのタイムスタンプ
- 各ファイルのパス
- 各ファイルの数と総ファイル数
- 各ファイルのサイズと総ファイルサイズ
前提
ls -l /*でルート配下のすべてのファイル(サブフォルダ含め)の
が表示されると認識しています。
- 各ファイルのタイムスタンプ
- 各ファイルのパス
- 各ファイルのサイズと総ファイルサイズ
発生している問題
各フォルダにあるファイル数と全体のファイル合計数を出すコマンドがわかりません。
ファイル数を出すコマンドはwc -lと認識しています。
また、
- 各ファイルのタイムスタンプ
- 各ファイルのパス
- 各ファイルの数と総ファイル数
- 各ファイルのサイズと総ファイルサイズ
を一気に出力したいと考えています。
調べた、実践したこと
ls -l ~/* | wc -l のように何かしらで繋ぐとできるのではと思い調べています。
お願いしたいこと
認識の間違いや解決方法を教えていただけますと幸いです。
個別ファイルに関する情報と、集計情報がごっちゃに書かれているので、何を得たいのか不明です。
どんな出力結果を期待していますか?
・タイムスタンプ・・・・これは個々のファイルの更新タイムスタンプですよね?
・ファイル数・・・・・・これは / 以下全体の個数??
・ファイルサイズ・・・・これは個々のファイルのサイズ?
・ファイルのパス・・・・これは個々のファイルのフルパス? ls -l だと出ませんが?ファイル名部分だけで良い?
> ls -l /*でルート配下のすべてのファイル(サブフォルダ含め)のが表示されると認識
とありますが、 このコマンドでは、サブフォルダ含め「すべて」ということではなく、/(ルート)ディレクトリのにあるファイルとフォルダの一覧であり、サブフォルダの内容については表示しません。
取得対象のファイル/ディレクトリはどのようなものですか?
いずれにしても、1行のコマンドで取得できるような情報ではないので、複数のコマンド、それも複雑なものをいくつか実行する必要があると思います。
otnさん
早々にご回答いただきありがとうございます。
また、複雑な記載申し訳ありません。
・タイムスタンプ・・・・これは個々のファイルの更新タイムスタンプですよね?→はい、そうです
・ファイル数・・・・・・これは / 以下全体の個数??→全体のファイル数と各フォルダにあるファイル数です。
・ファイルサイズ・・・・これは個々のファイルのサイズ?→こちらも全体のファイルサイズと各フォルダにあるファイルサイズです。
・ファイルのパス・・・・これは個々のファイルのフルパス? ls -l だと出ませんが?ファイル名部分だけで良い?→個々のフルパスです。ls -lですと仰る通り出力できないのですが、ls -l/*ですと各ファイルのパスが出るように思います。
TakaiYさん
取得対象のファイル/ディレクトリはサーバ内すべてのファイル/ディレクトリが対象です。
そのため/でコマンドを実行し、情報を出力しようと考えております。
↑曖昧なので、もうすこし精緻に書き直してください。
> ls -lですと仰る通り出力できないのですが、ls -l/*ですと各ファイルのパスが出るように思います。
出ません。
あと、「サイズ」とは何か?「1バイトのファイルが占有するディスク上のサイズは1でない」ことは理解していますか?環境に依りますが例えば1バイトのファイルは1キロバイト占有します。
1バイトのファイルが10個あるとすると、10バイトが欲しい値なのか、10キロバイトが欲しい値なのか。
tree コマンドでもよいかもしれません。ただ、「各ファイルの数」(ディレクトリに含まれるファイル数?)を取得するオプションが見当たらないので、その情報は含まれません。
$ tree -i -a -f -s -D --timefmt '%Y-%m-%d %H:%M:%S' --du --metafirst /
tree コマンドは、Ubuntu Linux であれば apt コマンドでインストールできます。
$ sudo apt install tree
回答2件
あなたの回答
tips
プレビュー