
■前提例
./public_html/rails/modules/abcde/cache/hoge/file1
./public_html/rails/modules/abcde/cache/file2
./public_html/ruby/modules/wiki/private/cache/file3
./net/cache/file4
./n/abcde/cache/file5
:
以下略
■期待しているのは、下記二つのディレクトリを検出し、かつそのディレクトリ以下のファイル数を、ディレクトリ毎に表示させたいのですが、
2./public_html/rails/modules/abcde/cache/
1./n/abcde/cache/
:
もしくは、
2./public_html/rails/modules/abcde/cache/hoge/file1
2./public_html/rails/modules/abcde/cache/file2
1./n/abcde/cache/file5
:
■実際に下記コマンドを実行すると、
find . -type f -regex '.*/abcde/cache/.*' -print | wc -l
4503
という数値(恐らくファイル数?)が返ってくるのみです。
ググッてみて、
find . -type f -regex '.*/abcde/cache*/.*' | xargs wc -l
find . -type f -regex '.*/abcde/cache/.*' -print | xargs wc -l
find . -type f -regex '.*/abcde/cache/.*' -exec wc -l \{\} \;
とか色々試してみたのですが、
恐らく行数?が表示されるようで、自分が期待した結果を得ることが
できません。
条件で検出したディレクトリ以下のファイル数を、ディレクトリ毎に表示させるには、
どうしたらよいのでしょうか。
No.1ベストアンサー
- 回答日時:
>■期待しているのは、下記二つのディレクトリを検出し
>./public_html/rails/modules/abcde/cache/
>./n/abcde/cache/
探す場所がわかっているのなら、 find の開始ディレクトリに指定すれば、それより下だけを探します。
-regexはabcde/cacheを探すために使ったものですし、今回のやり方だと常に真なので削ります。
find ./public_html/rails/modules/abcde/cache ./n/abcde/cache -type f -print
>かつそのディレクトリ以下のファイル数を、ディレクトリ毎に表示させたい
sedで開始ディレクトリだけ取り出す→sortで並びかえる→uniq に -cオプションつけて重複行を数える。
としてみました
find ./public_html/rails/modules/abcde/cache ./n/abcde/cache -type f -print | sed 's/^\(\.\/public_html\/rails\/modules\/abcde\/cache\/\|\.\/n\/abcde\/cache\/\).*$/\1/' test4.txt | sort | uniq -c
abcde/cacheがそれぞれに下に含まれていないならもうちょっと簡単に
find ./public_html/rails/modules/abcde/cache ./n/abcde/cache -type f -print | sed 's/^\(.*\/abcde\/cache\/\).*$/\1/' test4.txt | sort | uniq -c
ここまでくると、シェルスクリプトやperl,awk等を使ったほうがすっきりしそうです。
#!/usr/bin/sh
for i in _html/rails/modules/abcde/cache ./n/abcde/cache
do
echo "`find $i -type f | wc -l` $i"
done
この回答への補足
(前回に引き続き)ご回答いただき、ありがとうございます。
おかげで、自分が望む結果を得ることができました。
(簡単なスクリプトでこんなことも出来るんだ、とちょっと感動しました)
<補足>
>■期待しているのは、下記二つのディレクトリを検出し
説明が悪かったのですが、実際には、/abcde/cache/を
0~複数個探したいという意図でした。
>test4.txt
このtest4.txt は何を意味しているのでしょうか?
実際に試したところ、下記のようになりました。
sed: can't read test4.txt: No such file or directory
>abcde/cacheがそれぞれに下に含まれていないなら
それぞれに下に含まれていないなら、
この部分の意味がよく分かりませんでした。
■最終的に、試したのが、下記です。
find . -type f -regex '.*/abcde/cache/.*' -print | sed 's/^\(.*\/abcde\/cache\/\).*$/\1/' | sort | uniq -c
85 ./public_html/aa/modules/abcde/cache/
13 ./public_html/bb/modules/abcde/cache/
:
以下略
それぞれのディレクトリ以下にあるファイル数の一致を
無事確認することができました。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイル名で / (スラッシュ...
-
拡張子.dどういう意味
-
FTPコマンドのCDについて
-
samba上のディレクトリ作成日時...
-
7zを使うとフォルダの中身がす...
-
ホームページのディレクトリを...
-
scpによるデータ転送後、ディレ...
-
make時に出てきたエラーメッセ...
-
「ドット(.)」と「¥」の意味...
-
DVDでAUDIO_TSが無い!?
-
"cp -a"と"cp -r"の違い
-
/home/lost+foundを消してしまった
-
linuxコマンド mkdirでディレ...
-
2TBのUSBメモリを2000円ほどで...
-
Winmerge ファイルの中身は同じ...
-
Windows10 フォルダ内の自動並...
-
onedriveの中身を削除したらパ...
-
外字ファイル、eudc.tte と e...
-
hosts に 記載がなければ追加...
-
マウントを取る人
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル名で / (スラッシュ...
-
ftpのmgetコマンドの自分の格納...
-
拡張子.dどういう意味
-
7zを使うとフォルダの中身がす...
-
「ドット(.)」と「¥」の意味...
-
ホームページのディレクトリを...
-
「照合パターンに合いません」...
-
"cp -a"と"cp -r"の違い
-
make時に出てきたエラーメッセ...
-
FTPでPUTできない原因は何?
-
FTPコマンドのCDについて
-
Minecraftにforgeを入れたら、...
-
linuxコマンド mkdirでディレ...
-
scpによるデータ転送後、ディレ...
-
unzipコマンドでディレクトリな...
-
linuxのコマンドラインで、拡張...
-
LinuxでSGID設定する際、2775と...
-
tarでディレクトリのみをアーカ...
-
Linuxコマンドについて
-
Sambaへの接続で「ネットワーク...
おすすめ情報