- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:シェルにて、ファイル検索+ファイルコピー)
シェルでファイル検索+ファイルコピー
このQ&Aのポイント
- シェルでファイル検索をして、当日の最新ファイルをコピーする方法について質問します。
- 検索ファイル名称は「AAAAA_YYYYMMDD_HHMISS」となりますが、ワークファイルは作成せずに制限内でコピーしたいです。
- 例えば、2008.01.15の場合、AAAAA_20080115121217が最新ファイルとして対象になります。複数のファイルがある場合も考慮します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ls の l オプションは止めた方がいいでしょう. そうすれば cut しなくてすみます. で, 該当するファイルがないときにエラーにするのはいろんな方法があるけど, || で処理するか if 使うか. if を使うなら, FILE_NAME=`ls -r .... >/dev/null | sed -n 1p` のように * を展開するときに出るエラーを /dev/null にリダイレクトして消しておいてから if [ "x$FILE_NAME" = "x" ]; then エラー else export FILE_NAME 正常処理 fi のような形になるかと.
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.1
例の方で DD と HH の間に _ がないんだけど気のせい? さておき, 本当は OS とかがないとわからないんだけど, 例えば Linux なら AAAAA_`date +%Y%m%d`_* でいいような感じ.
質問者
補足
早速の解答ありがとうございます。 >例の方で DD と HH の間に _ がないんだけど気のせい? そのとおりですね、抜けてました。すいません。 AAAAA_`date +%Y%m%d`_* の場合、1)と2)と3)がヒットしてしまいました。 export FILE_NAME=`ls -lr AAAAA_`date +%Y%m%d`_* | cut -c58-69 | sed -n '1p' とやると、最新のファイルを見つけることができました。ありがとうございます。 一つ問題が、、、、 0件の場合にエラーメッセージを表示したいのですが、 どうすればよでしょうか?
お礼
いろいろと、ありがとうございました。 なんとか、旨く処理できました。 Goodでした、どうもです。