gpt4 book ai didi

linux - 根据条件在 Linux 中重命名文件名

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:34:13 25 4
gpt4 key购买 nike

我在 Linux 目录中有一些文件,如下所示。

email_Tracking_export_2018_08_26.zip
email_Tracking_export_2018_08_27.zip
email_Tracking_export_2018_08_28.zip
email_Tracking_export_2018_08_29.zip
email_Tracking_export_2018_09_03.zip
email_Tracking_export_history_Novemeber.zip
email_Tracking_export_history_December.zip
email_Tracking_export_history_january.zip
email_Tracking_export_history_february.zip
email_Tracking_export_history_march.zip
email_Tracking_export_history_April.zip

现在我想将文件名更改为如下所示。

email_Tracking_export_2018_08_26.zip
email_Tracking_export_2018_08_27.zip
email_Tracking_export_2018_08_28.zip
email_Tracking_export_2018_08_29.zip
email_Tracking_export_2018_09_03.zip
email_Tracking_export_2017_11_01.zip
email_Tracking_export_2017_12_01.zip
email_Tracking_export_2018_01_01.zip
email_Tracking_export_2018_02_01.zip
email_Tracking_export_2018_03_01.zip
email_Tracking_export_2018_04_01.zip

条件:

  1. 如果文件名是 yyyy-mm-dd 格式,则保持原样
  2. 如果文件名是按字母顺序转换为 yyyy-mm-dd
  3. 如果那个特定年份的月份已经过去而不是按原样离开,那么年份应该是前一年。

我如何在 bash/Linux 中实现它

最佳答案

for f in email_Tracking_export_*.zip; do
case "$f" in
email_Tracking_export_????_??_??.zip) : ignore ;;
*) date=$(stat -c %Y "$f") # mod time in seconds
fmtdate=$(date --date="@$date" +%Y_%m_%d) # formatted
mv "$f" email_Tracking_export_$fmtdate.zip
;;
esac
done

关于linux - 根据条件在 Linux 中重命名文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52228515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com