ファイル名に日付が含まれているファイルをその日付のフォルダにコピーします。

ファイル名に日付が含まれているファイルをその日付のフォルダにコピーします。

私はスタックオーバーフローに初めて触れました。

あなたの助けが必要です。事前にお答えいただきありがとうございます。

似たような質問を見つけましたが、私の場合は明快な答えを得るのが難しかったです。

私はSynology DS1515+とDSM 6.2.2を使用しています。

まず、次のスクリプトを使用して日付を含む毎日のフォルダを作成しました。

mkdir /volume1/video/$(date +%Y-%m-%d\(%a\))

このスクリプトは毎日真夜中に実行されます。

そして、いくつかのビデオファイルをダウンロードしました。このファイル名には日付が含まれています。

例:ABCDABCD.200328.aviまたはEFGHIJKH.200327.1080p.mp4

ファイル名に関する特定の規則はありませんが、YYMMDD タイプのすべてのファイル名には日付が含まれます。

このファイルを同じ日付を含むフォルダにコピーしたいと思います。

(自動生成されたフォルダの内容は上記の通り)

どうすれば助けたり説明したりできますか?

もう一度ありがとうございます。良い一日になってください。

ベストアンサー1

私が正しく理解したら、GNUでgrepこれを試してみてくださいdate

shopt -s nullglob
for file in *.avi *.mp4; do 
  dat=$(echo "$file" | grep -Po "(?<=\.)[0-9]{6}(?=\.)")
  if [[ $(date "+%y%m%d" -d "$dat") ]]; then
    dir=$(date -d "$dat" "+%Y-%m-%d(%a)")
    cp "$file" "$dir"
  fi
done

おすすめ記事