■前提例
./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 \{\} \;
とか色々試してみたのですが、
恐らく行数?が表示されるようで、自分が期待した結果を得ることが
できません。

条件で検出したディレクトリ以下のファイル数を、ディレクトリ毎に表示させるには、
どうしたらよいのでしょうか。

A 回答 (2件)

http://oshiete1.goo.ne.jp/qa5632040.html の続きですね。

>■期待しているのは、下記二つのディレクトリを検出し
>./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/
          :  
         以下略 

それぞれのディレクトリ以下にあるファイル数の一致を
無事確認することができました。

ありがとうございました!

補足日時:2010/01/30 12:04
    • good
    • 0

すみません。

test4.txt はこちらで動作確認したときに使ったものです。
削ってください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q復元ポイントの作成とイメージファイル等のバックアップとの違いについて

今晩は、宜しくお願いします。

復元ポイントの作成とイメージファイル等のバックアップとの違いについて教えて下さい。

Windowsで復元ポイントからシステムを復元させる方法があり、
また、イメージファイル等にバックアップをとり、復元させる方法もありますが
この両者はどのように違うのでしょうか。

復元ポイントの作成とは、その時点のシステムの設定等だけを保存しているという
ことでしょうか。

また、イメージファイル等のバックアップを作成するということは
システム設定と作成したファイル等もイメージファイルとして一括してバックアップ
されるのでしょうか。

イメージファイルの復元時に、作成したファイル等もイメージファイルから
復元されるのなら、同じ名前のファイルがあった場合には、
イメージファイル作成時の古い情報のファイルになってしまうのでしょうか。

以上、宜しくお願いします。

Aベストアンサー

【システムの復元】
Windowsが使用するシステムファイルのバックアップと復元。
ユーザーファイルには影響しない。
HDDの中に作成されるので、Windowsが起動しない環境では使用出来ない。

【システム修復ディスクの作成】
Windowsの起動時にF8を押下して起動するセーフモードから「コンピューターの修復」「システム回復オプション」を、外部記憶装置(CD、USBメモリなど)から起動出来るようにする。
Windows自体が起動しなくなった場合に、外部記憶装置から「システム回復オプション」が起動出来るようになる。修復されるのは、選択した項目により異なる。
WindowsREを利用。
https://msdn.microsoft.com/ja-jp/library/hh825173.aspx

【バックアップと復元】
システムのバックアップを作成し、ハードディスクなどが壊れた場合に備えパソコン内部のデータを全てバックアップ・復元出来る。
Windowsのインストールディスクや、システム修復ディスクから復元が可能。
システムもユーザーデータもバックアップを取った時点の状態に戻る。

【システムの復元】
Windowsが使用するシステムファイルのバックアップと復元。
ユーザーファイルには影響しない。
HDDの中に作成されるので、Windowsが起動しない環境では使用出来ない。

【システム修復ディスクの作成】
Windowsの起動時にF8を押下して起動するセーフモードから「コンピューターの修復」「システム回復オプション」を、外部記憶装置(CD、USBメモリなど)から起動出来るようにする。
Windows自体が起動しなくなった場合に、外部記憶装置から「システム回復オプション」が起動出来るようになる。...続きを読む

Qawk '{print $1}' file をもっと簡単に書きたい

awkで最も頻繁に使うのが、fileのN列目だけを抜き取ってくるという使い方なんですが

awk '{print $N}' file

Nとfileという2つの引数しか使わないのでこれを
 
my_awk N file 

といった具合に間単に使える my_awk シェルを作りたいんですが、$のあたりがうまくかけません、どう直せばいいでしょうか?↓

#!/bin/csh
awk '{print $$1}' $2

Aベストアンサー

awk '{print $'"$1"'}' $2

Q救出ファイル復元 2の機能について

「救出ファイル復元 2」で画像ファイルJPEGの他にRAWファイル、拡張子(CR2)を復元出来るでしょうか。

キャノンの一眼デジカメを使っているのですが、他の復元ソフトでは、復元出来ませんでした。

Aベストアンサー

Vectorあたりで『ディスク・ファイル復旧』の項目で探せばみつかりそうですが。
要は,"復元ソフトで復元できるファイルがソフトに登録されている拡張子だけしかできない"ことですので,拡張子を選択できる復元ソフトを捜せばいいと思われます。

参考URL:http://www.vector.co.jp/vpack/filearea/win/util/disk/care/

Qログイン後のカレントディレクトリが'/'になる

CentOS-6.2 を使用しているのですが、インストール時、/boot 以外は、パーティション設定をLVMにお任せインストールしたため、'/'パーティション の中に、 /home 以外の全てのパーティションが入ってしまい、'/' パーティション: 50 GB、'/home'パーティション:250GBという、いびつな状態になってしまいました。
このPCに、Apache Hadoop 0.20.2 を擬似分散モードでインストールして動かしてみたところ、あっと言う間に'/'領域がパンクしてしまいました。そこで
umount /home
resize2fs /dev/mapper/vg_V00/lv_home 10G
lvreduce -L 10G /dev/mapper/vg_V00/lv_home
lvextend +L 240G /dev/mapper/vg_V00/lv_root
resize2fs /dev/mapper/vg_V00/lv_home

と行って、'/'パーティションを拡張し、
mkfs.ext4 /dev/mapper/vg_V00/lv_home
を実行してfsをつくり直し、
mount /dev/mapper/vg_V00/lv_home /home
を行った後、
useradd hoge01
passwd hoge01
を実行してユーザアカウントを作ったのですが、PCを再起動してhoge01でログインしようとすると、カレントディレクトリが
/home/hoge01
ではなく、
/
となってしまいます。なお、
cd
とやると、/home/hoge01 に移動します。


一方、Cntr-Alt-F3で仮想コンソールからログインしようとすると、

No directory /home/hoge01 !
Logging in with home = "/".

と表示されてしまいます。

これはどうしたら解決できますでしょうか?
どうぞよろしくお願いします。

CentOS-6.2 を使用しているのですが、インストール時、/boot 以外は、パーティション設定をLVMにお任せインストールしたため、'/'パーティション の中に、 /home 以外の全てのパーティションが入ってしまい、'/' パーティション: 50 GB、'/home'パーティション:250GBという、いびつな状態になってしまいました。
このPCに、Apache Hadoop 0.20.2 を擬似分散モードでインストールして動かしてみたところ、あっと言う間に'/'領域がパンクしてしまいました。そこで
umount /home
resize2fs /dev/mapper/vg_V00/lv...続きを読む

Aベストアンサー

んー、となるとこういう話ですかねぇ。
http://d.hatena.ne.jp/norisuke3/20101119/1290130971

lv_rootは「作り直した」訳じゃないのでオートマウント出来てるけど、lv_homeは「作り直した」のでこの手順を踏む必要がある、と。

Q削除した画像ファイルの取り出しまたは復元方法

ごみ箱に入れてから削除したファイルの復元方法を教えてください。

以前にも同様の質問をしたのですが、その際に教えていただいた方法で確かにいくつかのファイルは復元することができました。

しかし、一番復元したい画像ファイル(jpeg形式)が復元できません、同時期に同じく削除したファイルは無事に取り出せたのですが肝心のファイルは取り出せません。指定するファイル名、フォルダ名などの間違いはないのですが何が原因で復元できないのか理解できません。

良きアドバイスをいただければ助かります。
宜しくお願いいたします。

Aベストアンサー

こういったファイル復元ソフトを利用してファイルを復活させます。

●FileRecovery(フリーウェア)

消去・欠損したファイルを復元するソフト。
http://www.pcinspector.de/download.htm

●復元(フリーウェア)
http://www.vector.co.jp/soft/win95/util/se192983.html

■FINALDATA(ファイナルデータ)フォトリカバリー3.0(有料)
http://www.finaldata.ne.jp/f_8_3.html

当然ながら復元できる確立は有料ソフトのほうが高いです。

これらを使っても復元できない場合はファイルが上書きされて完全に消えている可能性が高いです。

Qdir /A /B /S *.txtをLinuxで

Windowsで

C:>dir /A /B /S *.txt

を実行すると、そのディレクトリ以下の*.txtファイルが
C:\abc\def\hij.txt
C:\abc\def\klm.txt
...
と出力されます。

これをLinux上で出来ないでしょうか。
ネット上で調べたのですが、私の実力では"/S"と同じことがLinuxでは出来ないようです。

Aベストアンサー

質問内容を正しく解釈しているかわかりませんので間違っていたらごめんなさいです。

例えば、/home以下の*.txtを出力するのならこんな感じでしょうか。

find /home -type f -name "*.txt"

おそらくlsコマンドではうまくいかないと思いますので。

Q「ウイルス感染ファイル」削除後のシステム復元でどうなる?

ウイルスバスターで幾つかのウイルス感染ファイル発見し全て削除しましたが、感染したファイルはシステムファイルでしたので少し心配でしたが削除しました。
そこで教えて頂きたいのですが、感染した日付以前でシステムの復元をする事によって削除されたシステムファイルは復元できるのでしょうか?一度削除されたシステムファイルはシステムの復元をしても二度と復元しないのでしょうか?

Aベストアンサー

以下WindowsXPという前提で・・・

>システムファイルでしたので少し心配でしたが削除しました。
通常、このままではシステムエラーが発生します。
しかし、Windowsには自動復旧機能があり、削除されたファイルをハードディスク上にあるCabファイルから呼び出して復旧させるようになっています。
従って、殆どの場合、削除されたシステムファイルを手動でインストールする必要はありません。

☆SFCの実行
もしシステムエラーが出る場合SFC(System File Checker)の実行をお勧めします。

1.CDドライブにOSのインストールディスクを入れておく。
2.「スタート」「コマンドプロンプト」または「ファイル名を指定して実行」で
「sfc /scannow」と入力して「OK」

「Windows XP professional のディスクを入れてください」という表示が出ることがありますがHome Editionであれば「無視」を選んでスキップしてください

>感染した日付以前でシステムの復元をする事によって削除されたシステムファイルは復元できるのでしょうか?
出来ないことはないでしょうが、あまりお勧めできません。
現在の状態が正常でない。
過去の状態の方が快適に操作できる。
という場合、それがいいかもしれません。
しかし、Windowsの設定というのは非常に広範囲にわたっており、現在と過去を比較して、どちらが適正かを判断するのは容易ではありません。
また、過去の復元ポイントの中には不正な設定が含まれている場合があり、間違って、そのポイントを選択することもあります。
ウィルス対策ソフトのサイトでは一旦復元設定を無効にして、過去の復元ポイントを全て消去することを推奨しています。

>一度削除されたシステムファイルはシステムの復元をしても二度と復元しないのでしょうか?
間違った操作をすると汚染されたファイルが復元されてしまいます。
一旦復元設定を無効にして、過去の復元ポイントを全て消去することで汚染されたファイルは二度と復元しません。

以下WindowsXPという前提で・・・

>システムファイルでしたので少し心配でしたが削除しました。
通常、このままではシステムエラーが発生します。
しかし、Windowsには自動復旧機能があり、削除されたファイルをハードディスク上にあるCabファイルから呼び出して復旧させるようになっています。
従って、殆どの場合、削除されたシステムファイルを手動でインストールする必要はありません。

☆SFCの実行
もしシステムエラーが出る場合SFC(System File Checker)の実行をお勧めします。

1.CDドライ...続きを読む

QLPIC試験  /etc/'shell_name'.conf

Linux超初心者です。LPIC試験レベル2の出題範囲2.214.8のトラブルシューティング(環境設定)のキーワードに  /etc/'shell_name'.conf というファイルがあるのですが検索エンジンで調べても意味がよく分かりませんでした。'shell_name'シェルの設定ファイルという意味であってますでしょうか?ご教授お願いいたします。

Aベストアンサー

推測で、申し訳ありません。
'shell_name'というのは、使用しているshellの名前に読みかえるんだと思います。
Linuxの標準shellはbashなので、bash.conf。tcshを使っているなら、tcsh.confとなると思います。
ただし、/etcにbash.confというファイルはありません。
bashrcがそれに相当すると思います。
さらに、トラブルシューティングという点では、bash_login、bash_logout、profileなどのファイルも上記ファイルの範疇に入ると思います。
ただし、何故、Linux超初心者の方がLPIC試験レベル2を見なければいけないのでしょうか?レベル1というなら、まだわかりますが。

Q復元ソフトのふと感じた疑問 -ファイル名を削除したい-

先日、復元ソフトを使用していたときに感じたことなのですが
(使用ソフトは「復元」です。)
ファイルを復元する際の手順で削除したファイルが検索できますよね。
このファイル検索の時に、HITしないようにファイル名を完全に削除したい場合はどのようにすればいいのでしょうか??

例えば、「●●との秘密旅行001.jpg」のファイルを削除したとします。
その後、復元ソフトで検索をかけるとファイルを復元しなくてもファイル名を見ただけで怪しいファイルとわかってしまいますよね。
復元ソフトの検索で、表示されなくする方法か、別名に変える方法があるのなら教えてください。

Aベストアンサー

95159さんが求めていらっしゃるのは以下の方法ではないでしょうか。

フリーの復元ソフトに「DataRecovery」というものがあります。このフリーソフトには「削除したファイル」の名前を時間をかけず簡単に消去できる機能が付いています。

『DataRecovery』
http://www.vector.co.jp/soft/win95/util/se382922.html

■使い方
起動させる→該当ドライブをクリック→[スキャン]ボタンをクリック→削除したファイルの表示完了→「目的のファイルが見つかりましたか?」と出てきたら[キャンセル]をクリック→名前を消去したいファイルをクリックするか、名前を消去したい複数ファイルを左クリックしながら選択する→[消去]ボタンをクリック→[OK]をクリック

これで、名前を消せます。しかしながら完璧ではなくて、一部消せないこともあります。
(「DataRecovery」を再起動してもう一度ドライブをスキャンすると消せなかったファイルが表示されます)

参考URL:http://www.vector.co.jp/soft/win95/util/se382922.html

95159さんが求めていらっしゃるのは以下の方法ではないでしょうか。

フリーの復元ソフトに「DataRecovery」というものがあります。このフリーソフトには「削除したファイル」の名前を時間をかけず簡単に消去できる機能が付いています。

『DataRecovery』
http://www.vector.co.jp/soft/win95/util/se382922.html

■使い方
起動させる→該当ドライブをクリック→[スキャン]ボタンをクリック→削除したファイルの表示完了→「目的のファイルが見つかりましたか?」と出てきたら[キャンセル]をクリック→名...続きを読む

Q./configureにライブラリ(Perl Module)のパスを認識させたい

大きなシステムで自分のホームディレクトリディレクトリにしかアクセス権がなく、そこにHAL(Hardware Abstraction Layer:http://www.freedesktop.org/wiki/Software/hal)をソースからインストールしたいのですが、当然ルートディレクトリ以下の通常ソフトウェアをインストールするべき領域には置けないので--prefix=$HOMEオプションをつけて./configureしています。

HALの依存ファイル(ライブラリとバイナリ)もすべて自分のホーム以下にインストールしたのですが、以下のエラーメッセージが出て./configureが止まってしまいます。

error: XML::Parser perl module is required for intltool

ここで見つからないというParser.pmというPerl Moduleファイル(http://search.cpan.org/dist/XML-Parser/Parser.pm)も当然インストールしてホームディレクトリ以下のあるフォルダに入っているのですが、これをどうやっても認識できず同じエラーが出てしまうので、どうすればいいかわかる方教えてください。

試したのは、

env LD_LIBRARY_PATH=/インストール先ディレクトリ/ ./configure
env LDLIB=/インストール先ディレクトリ/ ./configure
env LIBS=/インストール先ディレクトリ/ ./configure
env PATH=/インストール先ディレクトリ/:$PATH ./configure

です。そのほか、envではなくsetenvでもやってみましたが無理でした。

大きなシステムで自分のホームディレクトリディレクトリにしかアクセス権がなく、そこにHAL(Hardware Abstraction Layer:http://www.freedesktop.org/wiki/Software/hal)をソースからインストールしたいのですが、当然ルートディレクトリ以下の通常ソフトウェアをインストールするべき領域には置けないので--prefix=$HOMEオプションをつけて./configureしています。

HALの依存ファイル(ライブラリとバイナリ)もすべて自分のホーム以下にインストールしたのですが、以下のエラーメッセージが出て./configureが...続きを読む

Aベストアンサー

環境変数 PERL_LIB ですかね?


人気Q&Aランキング

おすすめ情報