プロが教える店舗&オフィスのセキュリティ対策術

perl上からfindを使い検索した結果を、変数に挿入したい

perlからsystemを使い、Linuxのfindコマンドでファイルを検索した際に、

system 'find / abcde-*.tar.gz';

で検索はできるのですが、
結果の値(検索した後最後に出るファイル名の事です)を変数に入れたいのです。

どなたか教えていただけないでしょうか?

尚、検索範囲(全体)の中に該当のファイルは1つしか常に存在しないようになっています

A 回答 (2件)

`command` なり qx(command) なり open FILEHANDLE, '-|', 'command' なり,

この回答への補足

・・・・・ってfind: /lost+found: Permission denied
と出てしまいますな・・・・・・・
system 'find / abcde-*.tar.gz' では正しく取れるのですが。

補足日時:2010/06/01 14:29
    • good
    • 0
この回答へのお礼

お答えいただきありがとうございます


qx /find \/ abcde-*.tar.gz/;
を実行すると、出力された結果が取得できる、といった事でよろしいのでしょうか
この場合、perlでその値を得るにはどうすればいいのでしょうか?_

print $_; 等で出力できるのでしょうか

お礼日時:2010/06/01 14:18

> find / abcde-*.tar.gz



おかしくないですか?
これって、/(ルート)以下の全てと、カレントディレクトリにある"abcde-*.tar.gz"が対象になります。
/以下の "abcde-*.tar.gz"という名前を探すなら
find / -name "abcde-*.tar.gz"
だと思うんですが。
それとも、私の知らない独自のfindなのでしょうか。

> ・・・・・ってfind: /lost+found: Permission denied
> と出てしまいますな・・・・・・・

特権ユーザーで実行していなければ、実行時のユーザーの権限ではアクセスできないファイルやディレクトリがあります。
そういったものに当っただけです。/から全検索すれば、当り前に発生します。
そういうファイルやディレクトリが対象外になるだけで、そのまま検索は続きます。
このメッセージは標準エラー出力に出力されるので、qxや`やパイプラインからの入力には入ってきません。(明示的に取り込まないかぎり)


別解として、findコマンドを使わずに、File::Findモジュールを使う、というのがあります
    • good
    • 0

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