Linuxのコマンドについて


下記のようなディレクトリ構造から、ファイル数のみを出力したい場合はどのようにすればよいですか?欲しいのは各サブディレクトリ内のファイル数であり、合計ファイル数ではありません。
<ディレクトリ構造>
roootdir
├subdir001
├subdir002

└subdir100
<欲しい結果>
8
10
2

30

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2016/04/24 03:54:10
  • 終了:2016/05/01 03:55:03

回答(1件)

id:a-kuma3 No.1

a-kuma3回答回数4324ベストアンサー獲得回数17732016/04/24 11:40:51

roootdir というのは / のことか、何かのディレクトリなのか分からないので、以下、/roootdir 配下のサブディレクトリに対する bash のワンライナーです。

質問にあるような出力であれば、こんな感じ。

(cd /roootdir ; for d in *; do find $d -type f -print | wc -l; done)


これだと、どのディレクトリの数かが分からないので、こんな感じにした方が視認性が良いと思います。

(cd /roootdir ; for d in *; do find $d -type f -print | (printf "$d : " ; wc -l) ; done)


もし、/roootdir 直下にディレクトリとファイルが混在しているなら、こんな感じにすると /roootdir 直下のディレクトリだけを対象にします。

(cd /roootdir ; for d in `find . -type d -mindepth 1 -maxdepth 1 -print`; do find $d -type f -print | wc -l ; done)



上記の例みっつは、もし subdir001 などの下にさらにサブディレクトリがある場合には、それをもぐってファイルの数をカウントします。

他3件のコメントを見る
id:a-kuma3

全てのディレクトリに空白が含まれてます!

find の次にある $d をダブルクォートで括るとどうなりますか?

(cd /roootdir ; for d in *; do find "$d" -type f -print | (printf "$d : " ; wc -l) ; done)


Linux と言ってたのは、NAS の中なのですね。
だとすると、日本語がどうかなあ...

2016/04/25 11:30:17
id:kitamati

できました!凄い!ありがとうございます!

2016/04/25 11:37:11

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません