-2

I have a lot of files with this format:

  • download_agrupocqa_127_1656097965.tar.gz
  • download_bjxkwris_127_1656097966.tar.gz
  • download_climpieza_127_1656097965.tar.gz
  • download_dhermagqu_127_1656097966.tar.gz

Do you know some command to rename all files in a folder to this format?

  • agrupocqa.tar.gz
  • bjxkwris.tar.gz
  • climpieza.tar.gz
  • dhermagqu.tar.gz

Which means remove: download_ and _127_1656097965

tarleb
  • 19,863
  • 4
  • 51
  • 80
jmginer
  • 361
  • 1
  • 3
  • 7

1 Answers1

3

In BASH:

for file in *.tar.gz ; do 
    suffix="${file#download_}"      # this removes download_
    prefix="${suffix%%_*.tar.gz}"   # this removes everything after underscore
    mv "$file" "${prefix}.tar.gz"   # this renames the file
done

If you have sed:

for file in *.tar.gz ; do 
    newname=$(echo "$file" | sed 's/download_\([^_]*\)_[0-9_]*\..*/\1.tar.gz/')
    mv "$file" "$newname"
done
Dima Chubarov
  • 16,199
  • 6
  • 40
  • 76