我想根据日期列出文件并单独更改目录中文件中的日期
现在的文件:
abc051217.log
xyz051217.log
ccc051217.log
ddd051217.log
在上面我只想选择仅需要重命名日期的文件,如下所示
之后的文件:
abc021217.log
xyz021217.log
ccc021217.log
ddd021217.log
有什么解决办法吗?
答案1
你可以使用mmv
.mmv
使用带有“?”的标准 shell 模式匹配单个字符,“*”匹配 0 个或多个字符,这些字符在目标模式中用“#”+数字(从 1 开始)引用。
所以在你的用例中
mmv -n '*??????.log' '#102#4#5#6#7.log'
该选项-n
是空运行的,因此mmv
实际上不会删除您的文件,而只是打印出它将执行的操作。验证它确实达到了您想要的效果后,再次运行不带-n
.
答案2
将所有要重命名的文件放入test.txt test.txt
abc051217.log
xyz051217.log
ccc051217.log
ddd051217.log
使用下面的代码根据要求重命名。
代码 。
i=021217;sed '/^$/d' test.txt|awk -v i="$i" '{print "mv" " " $1 " " substr($1,1,3)i".log"}' | sh
输出
abc021217.log
xyz021217.log
ccc021217.log
ddd021217.log