如何在不手动更改脚本的情况下根据时间戳动态地将文件移动到新文件夹?

如何在不手动更改脚本的情况下根据时间戳动态地将文件移动到新文件夹?
# Create a folder
mkdir archived_PA_2022-01_2022-06

# Move files to new folder
find ./ -newermt "2021-12-31" ! -newermt '2022-06-28' -exec mv /var/log/pentaho/PA –t archived_PA_2022-01_2022-06 {} +

# Archive folder 
zip -r archived_PA_2022-01_2022-06.zip /var/log/pentaho/archived_PA_2022-01_2022-06

我这里有一个 Unix 脚本,用于将前 6 个月的文件移动到一个新文件夹。
我想要的是动态移动文件。

例如,今天,2023 年 7 月 6 日,我想根据 2023 年 1 月 5 日到 2023 年 7 月 5 日的时间戳将文件移动到名为“archived_PA_2023-01-05_2023-07-05”的新文件夹。 2023 年 1 月 7 日,我想根据 2023 年 1 月 6 日到 2023 年 7 月 6 日的时间戳将文件移动到名为“archived_PA_2023-01-06_2023-07-06”的新文件夹,依此类推。

我希望这个过程是动态的,其中自动确定时间戳,并相应地创建一个新文件夹,而无需每次运行脚本时手动更改脚本。

我有办法实现这一目标吗?

答案1

我能够弄清楚。

只需使用:

# Create a folder dynamically 
mkdir archived_PA_"$(date -d "6 months ago" +%Y-%m-%d)"_"$(date -d "1 day ago" +%Y-%m-%d)"

# Move files to new folder dynamically
find ./ -newermt "6 months ago" ! -newermt "1 day ago" -exec mv -t archived_PA_"$(date -d "6 months ago" +%Y-%m-%d)"_"$(date -d "1 day ago" +%Y-%m-%d)" {} +

相关内容