将上次编辑的人类可读时间戳附加到文件名

Beg*_*ner 6 bash timestamps files

我想使用 bash 将最后一次更改文件的时间添加到文件名中。

例如这个输出ls -la

 -rw-rw-r-- 1 beginner beginner 5382 Dec  1 17:18 B_F1-1.xml
Run Code Online (Sandbox Code Playgroud)

应该成为

 -rw-rw-r-- 1 beginner beginner 5382 Dec  1 17:18 B_F1-1_20141201T1718.xml
Run Code Online (Sandbox Code Playgroud)

我怎么能对 . 中的所有文件执行此操作?

mur*_*uru 6

您可以尝试以下操作:

EXT=${FILE#*.}
NAME=${FILE%%.*}

mv "$FILE" "$NAME$(date --reference "$FILE" '+%Y%m%dT%H%M').$EXT"
Run Code Online (Sandbox Code Playgroud)

在脚本中,如果您date支持--reference,它将获取参考文件的最后修改日期。

  • 您仍然应该在 `"$( ... "$var" ...)"` 中使用双引号——命令替换会产生一个子shell,因此“内部”引号不会与“外部”引号发生冲突 (5认同)