質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Tera Term

Tera Termは、TeraTerm Projectが開発する国産のWindows向けターミナルソフト。telnetプロトコルでのリモートホストへの接続やCOMポートのシリアル接続が可能で、マクロが利用できます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

2回答

705閲覧

サーバ内の情報を1コマンドで取得したい

YumiSakura

総合スコア101

Tera Term

Tera Termは、TeraTerm Projectが開発する国産のWindows向けターミナルソフト。telnetプロトコルでのリモートホストへの接続やCOMポートのシリアル接続が可能で、マクロが利用できます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

1クリップ

投稿2023/03/20 10:10

編集2023/03/20 11:04

実現したいこと

サーバ内の以下の情報を1コマンドで取得したい

  • 各ファイルのタイムスタンプ
  • 各ファイルのパス
  • 各ファイルの数と総ファイル数
  • 各ファイルのサイズと総ファイルサイズ

前提

ls -l /*でルート配下のすべてのファイル(サブフォルダ含め)の
が表示されると認識しています。

  • 各ファイルのタイムスタンプ
  • 各ファイルのパス
  • 各ファイルのサイズと総ファイルサイズ

発生している問題

各フォルダにあるファイル数と全体のファイル合計数を出すコマンドがわかりません。
ファイル数を出すコマンドはwc -lと認識しています。
また、

  • 各ファイルのタイムスタンプ
  • 各ファイルのパス
  • 各ファイルの数と総ファイル数
  • 各ファイルのサイズと総ファイルサイズ

を一気に出力したいと考えています。

調べた、実践したこと

ls -l ~/* | wc -l のように何かしらで繋ぐとできるのではと思い調べています。

お願いしたいこと

認識の間違いや解決方法を教えていただけますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2023/03/20 10:24

個別ファイルに関する情報と、集計情報がごっちゃに書かれているので、何を得たいのか不明です。 どんな出力結果を期待していますか? ・タイムスタンプ・・・・これは個々のファイルの更新タイムスタンプですよね? ・ファイル数・・・・・・これは / 以下全体の個数?? ・ファイルサイズ・・・・これは個々のファイルのサイズ? ・ファイルのパス・・・・これは個々のファイルのフルパス? ls -l だと出ませんが?ファイル名部分だけで良い?
TakaiY

2023/03/20 10:32

> ls -l /*でルート配下のすべてのファイル(サブフォルダ含め)のが表示されると認識 とありますが、 このコマンドでは、サブフォルダ含め「すべて」ということではなく、/(ルート)ディレクトリのにあるファイルとフォルダの一覧であり、サブフォルダの内容については表示しません。 取得対象のファイル/ディレクトリはどのようなものですか? いずれにしても、1行のコマンドで取得できるような情報ではないので、複数のコマンド、それも複雑なものをいくつか実行する必要があると思います。
YumiSakura

2023/03/20 10:57

otnさん 早々にご回答いただきありがとうございます。 また、複雑な記載申し訳ありません。 ・タイムスタンプ・・・・これは個々のファイルの更新タイムスタンプですよね?→はい、そうです ・ファイル数・・・・・・これは / 以下全体の個数??→全体のファイル数と各フォルダにあるファイル数です。 ・ファイルサイズ・・・・これは個々のファイルのサイズ?→こちらも全体のファイルサイズと各フォルダにあるファイルサイズです。 ・ファイルのパス・・・・これは個々のファイルのフルパス? ls -l だと出ませんが?ファイル名部分だけで良い?→個々のフルパスです。ls -lですと仰る通り出力できないのですが、ls -l/*ですと各ファイルのパスが出るように思います。
YumiSakura

2023/03/20 11:06

TakaiYさん 取得対象のファイル/ディレクトリはサーバ内すべてのファイル/ディレクトリが対象です。 そのため/でコマンドを実行し、情報を出力しようと考えております。
otn

2023/03/20 11:09

↑曖昧なので、もうすこし精緻に書き直してください。 > ls -lですと仰る通り出力できないのですが、ls -l/*ですと各ファイルのパスが出るように思います。 出ません。 あと、「サイズ」とは何か?「1バイトのファイルが占有するディスク上のサイズは1でない」ことは理解していますか?環境に依りますが例えば1バイトのファイルは1キロバイト占有します。 1バイトのファイルが10個あるとすると、10バイトが欲しい値なのか、10キロバイトが欲しい値なのか。
melian

2023/03/20 13:06

tree コマンドでもよいかもしれません。ただ、「各ファイルの数」(ディレクトリに含まれるファイル数?)を取得するオプションが見当たらないので、その情報は含まれません。 $ tree -i -a -f -s -D --timefmt '%Y-%m-%d %H:%M:%S' --du --metafirst / tree コマンドは、Ubuntu Linux であれば apt コマンドでインストールできます。 $ sudo apt install tree
guest

回答2

0

疑問は、
そんなデータ採って何するんだ?
です。データ読みきれないですよ、試しに ls -R / してみてください。全file(とdir)の一覧が出ますが、すごいことになります。

認識は間違えています。どう間違えているのか説明はかなり手間なので、ネットでそのコマンドを調べるか、手元で試して結果をみてみるかしてください。

1.各ファイルのタイムスタンプ
2.各ファイルのパス
3.各ファイルのサイズ
4. 総ファイル数
5.総ファイルサイズ
6. 各ファイルの数

1,2,3 は1コマンドでできます。その他はその結果を別のコマンドで処理する必要があります。
その手順を foo.sh に書き込んでそれを実行すれば1コマンドでできることになります。
1,2,3 を1コマンドで出し、かつ フルパスで、ということでしたら
find / -type f -exec ls -l {} + が良いでしょう。
4はそれを wc すればよいし、5 は awkあたりで集計してください。
6は 各dirごとのfile数だとすると 厄介です。
find の結果よりは ls -R の結果のほうが楽でしょう。awkとかrubyとかで楽しんでください。

投稿2023/03/20 13:56

winterboum

総合スコア23347

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

あまり回答になってないと思いますが、質問の内容を取得するように要請されたらこうするかなという手順。

  1. duコマンドでファイル/ディレクトリのパスとサイズ(バイト)の一覧を取得
    du -b /
  2. 1で取得した情報から、ファイル/フォルダの種別とタイムスタンプを取得
    ls -l <ファイルパス>

これで一通りの情報は取れると思います。
どのように組み合わせるかは好みの問題になりますね。ワンライナーでもできなくはないかも。

投稿2023/03/20 12:09

TakaiY

総合スコア12765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問