【发布时间】:2019-04-20 06:11:19
【问题描述】:
我正在恢复一些名称中带有日期的档案,类似于:
user-2018.12.20.tar.xz
user-2019.01.10.tar.xz
user-2019.02.25.tar.xz
user-2019.04.19.tar.xz
...
我想设置每个文件的修改日期以匹配文件名中的日期,方法是将文件名通过xargs 传送到touch 并使用replace-str 设置日期。
touch -m -t 将采用 [CCYYMMDDhhmm] 格式的日期时间,但我无法替换内联:
find . -name "*.xz" | xargs -I {} touch -m -t $(sed -e 's/\.tar\.xz//g; s/user-//g; s/\.//g; s/\///g; s/$/0000/g' {}) {}
返回touch: invalid date format ‘./user-2018.03.22.tar.xz’,即使这样:
find . -name "*.xz" | sed -e 's/\.tar\.xz//g; s/user-//g; s/\.//g; s/\///g; s/$/0000/g'
返回格式正确的日期,例如201812200000。我是否以某种方式在替换字符串中滥用了命令替换?
编辑: 是的,一个简单的脚本可以做到这一点没有问题。但问题仍然存在......
【问题讨论】:
标签: linux bash shell sed xargs