ファイル名から日付、月、年を取得し、日付形式に変換

ファイル名から日付、月、年を取得し、日付形式に変換

data_extraction_check_03_02_2021.txtというファイルがあります。日付、月、年順にファイル名から最後の3つの値を取得しようとしています。次に、その日付と現在の日付の間の日数を確認できるように、3つの変数を連結して日付形式に変換する必要があります。

次のコマンドを使用すると、「data_extraction_check_03_02_2021.txt」という最後のファイル名が取得されます。

 latest_file=$(ls -t | head -n 1)
 echo $latest_file

次のコマンドを使用してdate_last、Month_last、year_lastを取得しようとしましたが、「date_last:command not find」エラーが発生しました。

date_last = echo "${latest_file}" | awk -F'[_.]' '{print $4}'
month_last = echo "${latest_file}" | awk -F'[_.]' '{print $5}'
year_last = echo "${latest_file}" | awk -F'[_.]' '{print $6}'

その後、次のコマンドを使用してdate_last、Month_last、year_lastを接続しました。これを日付形式に変換する方法がわかりません。

last_extracted_date=$(echo ${date_last}-${month_last}-${year_last})

ベストアンサー1

あなたの使命が間違っています。先頭または末尾の空白文字はあってはいけません。また、コマンドの置換もあってはなり=ません。$(...)

date_last=$(echo "${latest_file}" | awk -F'[_.]' '{print $4}')

GNUを使用すると、date次のように日数を計算できます。

date=$(echo "$latest_file" | awk -F'[._]' '{ print $6 "-" $5 "-" $4 }')
days=$(( ($(date +%s) - $(date +%s -d "$date")) / 86400 ))
echo "$days"

おすすめ記事