批量重命名文件,ids完好无损

jml*_*jml 1 bash rename

我有一个目录列表,如

seascaperecovered0088crop.jpg 
seascaperecovered0096crop.jpg
seascaperecovered0098crop.jpg
seascaperecovered0101crop.jpg
seascaperecovered0103crop.jpg
seascaperecovered0105crop.jpg
seascaperecovered0107crop.jpg
seascaperecovered0112crop.jpg
seascaperecovered0119crop.jpg
seascaperecovered0122crop.jpg
Run Code Online (Sandbox Code Playgroud)

我想重命名所有文件,如下所示:

seascape_0122.jpg
Run Code Online (Sandbox Code Playgroud)

我尝试过这样的事情:

for f in `ls | egrep 'seascaperecovered.*\.jpg'`; 
do mv $f ${f/seascaperecovered/seascape}; 
done
Run Code Online (Sandbox Code Playgroud)

我已经读过你可以用mv,rename,sed,awk等来做到这一点.有人能指出我在UNIX中实现这个的最简单(也是最清晰,最有希望)的方法吗?FWIW,我正在进入Linux机器并运行bash shell.

谢谢,jml

Ker*_* SB 5

很简单:

for i in seascaperecovered*.jpg; do A=${i/crop/}; mv $i ${A/recovered/_}; done
Run Code Online (Sandbox Code Playgroud)

(echo在第mv一次之前进行干运行.)