cronjobsで設定できるスクリプトを使用して日付別にファイルを並べ替えるのに役立ちます。ディレクトリを抽出して生成する文字列は次のとおりです。YYYYMMDDDHMMSS、すべてのファイル名に存在します。
# ls
AB.CDEFGHIJ0KLM_NO_1234P5678_QR_9012_YYYYMMDDHHMMSS_345678_ETH2_Testing-run_0.msg
つまり、ABC.DVCSR1234_20191101120130_BLAH_97.msgのソースは次のとおりです。
/home/user/files/AB.CDEFGHIJ0KLM_NO_1234P5678_QR_9012_YYYYMMDDHHMMSS_345678_ETH2_Testing-run_0.msg
到着
/home/user/files/2019/11/01/AB.CDEFGHIJ0KLM_NO_1234P5678_QR_9012_YYYYMMDDHHMMSS_345678_ETH2_Testing-run_0.msg
ファイル構造に再構成する必要がある何千ものファイルがあります。
ベストアンサー1
移動したいファイルに次のパターンが含まれているとします_YYYYMMDDHHMMSS_
。
#!/bin/bash
cd /home/user/files
for file in *.msg; do
date=$(printf "$file" | sed -nE 's/.*_([0-9]{4})([01][0-9])([0-3][0-9])[0-2][0-9][0-6][0-9][0-6][0-9]_.*/\1\/\2\/\3/p')
if [ -n "$date" ]; then
mkdir -p "$date" && mv "$file" "$date"
fi
done