开发者

batch rename files with ids intact

开发者 https://www.devze.com 2023-03-28 09:03 出处:网络
i have a directory listing like seascaperecovered0088crop.jpg seascaperecovered0096crop.jpg seascaperecovered0098crop.jpg

i have a directory listing like

seascaperecovered0088crop.jpg 
seascaperecovered0096crop.jpg
seascaperecovered0098crop.jpg
seascaperecovered0101crop.jpg
seascaperecovered0103crop.jpg
seascap开发者_如何学Cerecovered0105crop.jpg
seascaperecovered0107crop.jpg
seascaperecovered0112crop.jpg
seascaperecovered0119crop.jpg
seascaperecovered0122crop.jpg

and i want to rename all files as seen here:

seascape_0122.jpg

i have tried something like this:

for f in `ls | egrep 'seascaperecovered.*\.jpg'`; 
do mv $f ${f/seascaperecovered/seascape}; 
done

i have read that you can do this with mv, rename, sed, awk, etc. can someone point me to the easiest (and clearest, hopefully) way of accomplishing this in UNIX? FWIW, I am ssh'd into a Linux machine and running a bash shell.

thanks, jml


Very straightforward:

for i in seascaperecovered*.jpg; do A=${i/crop/}; mv $i ${A/recovered/_}; done

(Put echo before the mv first for a dry run.)


With bash regular expressions

for file in *; do 
  [[ "$file" =~ [0-9]+ ]] && mv "$file" seascape_${BASH_REMATCH[0]}.jpg 
done
0

精彩评论

暂无评论...
验证码 换一张
取 消