如何连接替换文件名

时间:2011-07-27 07:21:26

标签: shell scripting

我需要编写一个脚本,它会自动重命名一些文件,并包含一个用户定义的字符串。例如,我希望将文件*001.jpg重命名为"user defined string" + 001.jpg(例如:MyVacation20110725_001.jpg)。

这是我到目前为止所尝试的:

#!/bin/sh

echo "Type the user-defined string, followed by [Enter]: "
read str
for file in *.jpg; do 
`sed s/$str_$file/$file/`;
done

问题是没有任何事情发生。

3 个答案:

答案 0 :(得分:1)

您的脚本中的一些更改。请参阅以下内容:

#!/bin/sh

echo "Type the user-defined string,followed byt[Enter]: "
read str
for file in *.jpg; do 
new_name=`echo ${str}_${file}`;
mv ${file} ${new_name}
done

答案 1 :(得分:1)

您可以在循环中尝试此操作:

for file in *.jpg
do
mv ${file} $file$str
done

答案 2 :(得分:0)

这样的东西
cnt=1
for file in *.jpg; do
   cname=$(printf "%03d" $cnt)
   mv "${file%.jpg}" "${str}_$cname.jpg"
   ((cnt++))
done

(在用户读取str之后,如你所做的那样)将从“whatever.jpg”重命名为“myString_NNN.jpg”,例如第一个是“myString_001.jpg”,第二个是“myString_002.jpg”,依此类推。