获得以下代码,从文件名开头删除1234-
rename -v "s/^1234-//g" *.***
输入:
1234-test1.test2.jpg
输出:
test1.test2.jpg
这段代码将-1234添加到文件名
的末尾for file in *.jpg; do echo $(basename $file .jpg)-1234; done
输入:
test1.test2.jpg
输出:
test1.test2-1234.jpg
我正在寻找一种方法将这两个命令组合成一个单独的脚本,但是如果可能的话,还要以某种方式避免第二位代码在每次运行时继续添加-1234。
答案 0 :(得分:0)
这假定所有文件都是.jpg
:
rename -v "s/^1234-(.+)(\.jpg)/$1-1234$2/" *.*
这匹配整个文件名,但捕获仅仅是{2}组之后的部分。 1234-
和$1
区域反向引用捕获的部分。
答案 1 :(得分:0)
这就是它:
for file in *.jpg; do
basename=${file%.*} # Get the basename without using a subprocess.
extension=${file##*.} # Get the extension if you want to add *.JPG in the for, can be skipped if only *.jpg.
newname=${basename#1234-} # Remove "1234-" in front of basename.
test "$basename" = "$newname" && # If basename did not start with "1234-", skip this file.
continue
newname=${newname%-1234} # Remove an eventual "-1234" at the end of newname.
newname="${newname}-1234" # Add "-1234" at the end of newname.
newname="$newname.$extension" # Restore extension.
echo mv "$file" "$newname" # echo rename command.
done
如果您对输出感到满意,请删除最后一行中的回声。