将 Linux 中的文件重命名为日期减去一天
Renaming files in Linux to date minus one day
我有一个程序 (.sh) 可以提取数据并将其写入 .csv 文件。
我们根据此语句创建的这些 .csv 文件使用的名称:
for f in $DATA_DIR/*.csv
do
mv $f ${f%.csv}$(date "+__$FROM_DATE""_$FROM_DATE""000000.csv")
done
其中$FROM_DATE是运行shell脚本时的变量。这可以是我们想要提取的任何日期。
现在我想将文件命名为 $FROM_DATE 但前一天。
所以名称应该是提取数据的前一天。
我在 Google 上发现了这个,但不确定如何在我现有的语句中实现它:
date -d"20220122 -1 day" +%Y%m%d
非常感谢任何帮助!
假设 FROM_DATE
的格式是 YYYYMMDD
,那么第一个脚本中的 date
命令是无用的。除了回应您传递给它的内容外,它什么都不做。而你的第二个 date
命令正是你想要的。所以总而言之,应该做到以下几点:
y=$(date -d"$FROM_DATE -1 day" +%Y%m%d)
for f in $DATA_DIR/*.csv; do
mv "$f" "${f%.csv}__${y}_${y}000000.csv"
done
我有一个程序 (.sh) 可以提取数据并将其写入 .csv 文件。 我们根据此语句创建的这些 .csv 文件使用的名称:
for f in $DATA_DIR/*.csv
do
mv $f ${f%.csv}$(date "+__$FROM_DATE""_$FROM_DATE""000000.csv")
done
其中$FROM_DATE是运行shell脚本时的变量。这可以是我们想要提取的任何日期。 现在我想将文件命名为 $FROM_DATE 但前一天。 所以名称应该是提取数据的前一天。 我在 Google 上发现了这个,但不确定如何在我现有的语句中实现它:
date -d"20220122 -1 day" +%Y%m%d
非常感谢任何帮助!
假设 FROM_DATE
的格式是 YYYYMMDD
,那么第一个脚本中的 date
命令是无用的。除了回应您传递给它的内容外,它什么都不做。而你的第二个 date
命令正是你想要的。所以总而言之,应该做到以下几点:
y=$(date -d"$FROM_DATE -1 day" +%Y%m%d)
for f in $DATA_DIR/*.csv; do
mv "$f" "${f%.csv}__${y}_${y}000000.csv"
done