1

How to rename file names? I want to map names:

abc-hdpi.png ⟶ abc.png
bcd-hdpi.png ⟶ bcd.png

...

I have many files to do this, so mv abc-hdpi.png abc.png is not a good solution.

Jonathan Leffler
  • 730,956
  • 141
  • 904
  • 1,278
Weiyi
  • 1,843
  • 2
  • 22
  • 34
  • What is it that you want to remove, more specifically? Are all files named `*-hdpi.png`, or do you want to remove everything after a dash? – Dolda2000 Mar 17 '15 at 03:28
  • Yes, all files named `*-hdpi.png`, and I want to discard `-hdpi`, and rename to `*.png`. Thanks. – Weiyi Mar 17 '15 at 03:33

2 Answers2

6

Search for prename (Perl rename) command; it can do the job easily:

prename 's/-hdpi.png/.png/' *-hdpi.png

Failing that:

for file in *-hdpi.png
do
    mv "$file" "${file%-hdpi.png}.png"
done
Jonathan Leffler
  • 730,956
  • 141
  • 904
  • 1,278
1

You can extract from a fixed length string like so:

NAME[0]="abc-hdpi.png"
NAME[1]="def-hdpi.png"
NAME[2]="ghi-hdpi.png"
NAME[3]="jkl-hdpi.png"
NAME[4]="mno-hdpi.png"

rename(){
    var=$1
    mv $var $var{0:2}$var{8:}
}

for i in "${Name[@]}"
do
    rename $i
done
simhumileco
  • 31,877
  • 16
  • 137
  • 115