переименовать несколько файлов в сценарии оболочки

переименовать несколько файлов... в оболочке

У меня есть 3 файла в каталоге

abc.tar.gz
abc2.tar.gz
abc3.tar.gz

используя эту команду:

rename abc abc.part abc*.tar.gz

он превращает их в

abc.part.tar.gz
abc.part2.tar.gz
abc.part3.tar.gz

после этого я добавил в него еще 3 файла..

abc.tar.gz
abc2.tar.gz
abc3.tar.gz

и когда я стреляю, переименуйте abc abc.part abc*.tar.gz

он переименует все 6 файлов, поэтому окончательный вывод будет

abc.part.tar.gz
abc.part.part2.tar.gz
abc.part.part3.tar.gz
abc.part.part.tar.gz
abc.part2.tar.gz
abc.part3.tar.gz

Я просто хочу предотвратить многократное переименование... что должна делать моя команда rename?

означает, что мой окончательный вывод должен быть ниже, независимо от того, сколько времени я запускаю команду переименования. здесь количество файлов DYNAMIC ..это может быть 3,4...или сколько угодно... поэтому нельзя добавить статически 3 или какое-то число!!

abc.part.tar.gz
abc.part2.tar.gz
abc.part3.tar.gz

person Jatin Bodarya    schedule 08.05.2013    source источник
comment
Это не похоже на вопрос bash/sh.   -  person svante    schedule 08.05.2013
comment
theunixshell.blogspot.com/2013/01/   -  person Vijay    schedule 13.05.2013


Ответы (2)


В качестве последнего аргумента для переименования используйте:

abc{,2,3}.tar.gz
person William Pursell    schedule 08.05.2013
comment
и что я предполагаю делать, если есть больше номеров? динамику не подскажешь? - person Jatin Bodarya; 08.05.2013
comment
Вы также используете abc{,[23]}.tar.gz или abc{,[0-9]}{,[0-9]}.tar.gz - person William Pursell; 09.05.2013

Создайте следующий скрипт «ChangeExt»:

#!/bin/bash
if [ $# -lt 2 ]; then 
   echo "$0 NEWEXT FILENAME.." 
   exit 1
fi

$newext=$1
shift

for a in $* 
do
  mv $a "`basename $a`.$newext"
  echo "$a to `basename $a`.$newext"
done
person Curt    schedule 08.05.2013