前提・実現したいこと
特定のディレクトリに格納された、拡張子のみ異なる2つのファイルについてとある操作をしたいです。
↓ディレクトリ内イメージ
$ls -a1t /tmp/Foo_20200208053030_baz_egg.txt /tmp/Foo_20200208053030_foo_bar.gz /tmp/Foo_20200208053030_foo_bar.txt /tmp/Foo_20200209140015_foo_bar.bkup /tmp/Foo_20200209140015_foo_bar.bat /tmp/Foo_20200209140015_foo_bar.txt ←抽出対象(1) /tmp/Foo_20200209140015_foo_bar.gz ←抽出対象(2) 固定識別子_YYYYMMDDhhmmss(日時)_引数1_引数2.拡張子
●実現したいこと
・ディレクトリ内に存在するファイルで、YYYYMMDDhhmmss(日時)部分が最大のファイルを特定する。
&拡張子が特定のファイルのみ(ここでは.txtと.gz)、それぞれ変数へ格納する。
・抽出した2つのファイル(.txtと.gz)名の、YYYYMMDDhhmmss(日時)部分が互いに一致していることをチェックする。
該当のソースコード
bash
1## 作業ディレクトリ内から、ファイル名日時欄が最大値(最新)のファイル名を抽出する 2# .txtファイル 3target_file_md5=$(ls -a1t /tmp/Foo_??????????????_$1_$2.txt | sort -r | head -n 1) 4isSuccess=$? 5# コマンドが成功したか(ファイル名は存在したか)確認 6if [ $isSuccess -eq 0 ]; then 7 echo "OK" 8else 9 echo "NG" 10fi 11 12# 同じ処理を、ほかの拡張子ファイルでも実行する 13# .gzファイル 14target_file_gz=$(ls -a1t /tmp/Foo_??????????????_$1_$2.gz | sort -r | head -n 1) 15isSuccess=$? 16if [ $isSuccess -eq 0 ]; then 17 echo "OK" 18else 19 echo "NG" 20fi
ここまでは書いたのですが、互いのチェックや重複処理をシンプルにする方法などで行き詰まってしまいました。
お詳しい方、ご教示願えませんでしょうか?
よろしくおねがいします。
補足情報(FW/ツールのバージョンなど)
CentOS7
bash
回答1件
あなたの回答
tips
プレビュー