Linuxのコマンドについて


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

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

30

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2016/05/01 03:55:03

回答1件)

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

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

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

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

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

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

回答リクエストを送信したユーザーはいません