我需要在文件名的中间添加一个字符,我需要在同一目录中为大约8000个文件执行此操作.我正在寻找一个命令行选项:
示例(需要重命名的所有文件都是五位数,它们位于包含不需要重命名的其他六位数文件名的目录中):
01011
02022
12193
Run Code Online (Sandbox Code Playgroud)
至:
010101
020202
121903
Run Code Online (Sandbox Code Playgroud)
我尝试了几件事:rename,mv等.与此类似(Bash - 在文件名中间添加0)但不完全
rua*_*akh 10
你可以写:
for file in * ; do
mv ./"$file" "${file:0:4}0${file:4}"
done
Run Code Online (Sandbox Code Playgroud)
(参见Bash参考手册中§3.5.3"Shell参数扩展"的说明和.)${parameter:offset}${parameter:offset:length}
编辑添加:如果您只想捕获特定文件子集,则可以更改*为更具体的模式,例如[0-9][0-9][0-9][0-9][0-9](匹配由五位数组成的文件名).
顺便说一句,你可以在一行上格式化整个事物:
for file in [0-9][0-9][0-9][0-9][0-9] ; do mv "$file" "${file:0:4}0${file:4}" ; done
Run Code Online (Sandbox Code Playgroud)