我是一名学生,我很擅长打击,所以非常感谢任何帮助!
我正在尝试重命名一批看起来像这样的文件:local_date_1415 + 6556_0001.txt和local_date_1415 + 6556_0002.txt。
示例文件名:uuw_07052006_1415 + 6556_0001.txt
我需要每个文件名的“1415 + 6556”部分在其前面有2M,如“2M1415 + 6556”。文件夹中大约一半的文件已经有2M,所以我不能只搜索字符串并替换。
有没有办法使用“_”作为分隔符重命名该批文件,这样我就可以用正确的字符串完全替换所有第三部分?
我的机器上有重命名命令,我只是不确定如何在这里使用它。
答案 0 :(得分:0)
使用您的rename
版本:
rename _ % *_????+*.txt # replace the first underscore with a percent
rename _ _2M *_????+*.txt # add 2M after the second underscore
rename % _ *_2M????+*.txt # return the first underscore back
仅在文件名不包含%
时才有效。如果他们这样做,请选择一个不同的角色。
您也可以自己编写循环:
#! /bin/bash
for f in *_????+*.txt ; do
before=${f%[0-9][0-9][0-9][0-9]+*}
after=${f#*_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]}
mv "$f" "$before"2M"$after"
done