- ベストアンサー
perl上からfindを使い検索した結果を、変数に挿入したい
perl上からfindを使い検索した結果を、変数に挿入したい perlからsystemを使い、Linuxのfindコマンドでファイルを検索した際に、 system 'find / abcde-*.tar.gz'; で検索はできるのですが、 結果の値(検索した後最後に出るファイル名の事です)を変数に入れたいのです。 どなたか教えていただけないでしょうか? 尚、検索範囲(全体)の中に該当のファイルは1つしか常に存在しないようになっています
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> 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モジュールを使う、というのがあります
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
`command` なり qx(command) なり open FILEHANDLE, '-|', 'command' なり, お好きな物をどうぞ.
お礼
お答えいただきありがとうございます qx /find \/ abcde-*.tar.gz/; を実行すると、出力された結果が取得できる、といった事でよろしいのでしょうか この場合、perlでその値を得るにはどうすればいいのでしょうか?_ print $_; 等で出力できるのでしょうか
補足
・・・・・ってfind: /lost+found: Permission denied と出てしまいますな・・・・・・・ system 'find / abcde-*.tar.gz' では正しく取れるのですが。