人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Linuxのコマンドについて

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

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

30

●質問者: kitamati
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3

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 などの下にさらにサブディレクトリがある場合には、それをもぐってファイルの数をカウントします。


kitamatiさんのコメント
ディレクトリ構造を詳細に書いたほうがよかったのでしょうか、どのディレクトリも0が返って来ました・・・ albums/ ├日本語タイトルA/ 日本語タイトル01.mp3 … 日本語タイトル100.mp3 ├日本語タイトルB/ 日本語タイトルB01.ogg … 日本語タイトルB20.mp3 … └日本語タイトルZ/ 日本語タイトルZ01.mp4 上記のような構造となっており、 100 20 … 1 という風に返して欲しいのです。 贅沢を言うようですみません。

a-kuma3さんのコメント
日本語タイトルX とあるディレクトリの数だけ、0 が並ぶのでしょうか? もしかして、日本語タイトルX って空白が含まれてたりします? 日本語タイトルX ディレクトリに、読み込み権限と実行権限はついてるでしょうか。 それとも、日本語タイトルX ディレクトリはシンボリックリンクだったりするでしょうか。 対象を別のディレクトリに変えると、正しく結果は得られますか? 例えば、/usr/local とか >> <tt>(cd /usr/local ; for d in *; do find $d -type f -print | (printf "$d : " ; wc -l) ; done)</tt> <<

kitamatiさんのコメント
全てのディレクトリに空白が含まれてます!すみません。 実はreadynasというNAS上での話でして、 http://d.hatena.ne.jp/houmei/20131016/1381931148 上記のような事情からrootでやってますので、権限は大丈夫だと思います。

a-kuma3さんのコメント
>> 全てのディレクトリに空白が含まれてます! << find の次にある <tt>$d</tt> をダブルクォートで括るとどうなりますか? >> <tt>(cd /roootdir ; for d in *; do find "$d" -type f -print | (printf "$d : " ; wc -l) ; done)</tt> << Linux と言ってたのは、NAS の中なのですね。 だとすると、日本語がどうかなあ...

kitamatiさんのコメント
できました!凄い!ありがとうございます!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ