0

得到以下代码,它从文件名的开头删除 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。

4

2 回答 2

0

这假设所有文件都是.jpg

rename -v "s/^1234-(.+)(\.jpg)/$1-1234$2/" *.*

这匹配整个文件名,但仅捕获1234-2 组之后的部分。$1和area 对捕获的$2部分进行反向引用。

于 2012-12-06T09:08:44.690 回答
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

如果您对输出感到满意,请删除最后一行中的 echo。

于 2012-12-06T09:33:22.917 回答