• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:シェルにて、ファイル検索+ファイルコピー)

シェルでファイル検索+ファイルコピー

このQ&Aのポイント
  • シェルでファイル検索をして、当日の最新ファイルをコピーする方法について質問します。
  • 検索ファイル名称は「AAAAA_YYYYMMDD_HHMISS」となりますが、ワークファイルは作成せずに制限内でコピーしたいです。
  • 例えば、2008.01.15の場合、AAAAA_20080115121217が最新ファイルとして対象になります。複数のファイルがある場合も考慮します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.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 のような形になるかと.

zozo33
質問者

お礼

いろいろと、ありがとうございました。 なんとか、旨く処理できました。 Goodでした、どうもです。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

例の方で DD と HH の間に _ がないんだけど気のせい? さておき, 本当は OS とかがないとわからないんだけど, 例えば Linux なら AAAAA_`date +%Y%m%d`_* でいいような感じ.

zozo33
質問者

補足

早速の解答ありがとうございます。 >例の方で 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件の場合にエラーメッセージを表示したいのですが、 どうすればよでしょうか?

関連するQ&A