Как отмечено в моем ответе на ваш предыдущий вопрос:
for f in *.pdf; do
tmp=`echo $f | sed -r 's/^(.{5}).*(\..*)$/$1$2/'`
mv -b ./"$f" ./"$tmp"
done
Это сделает резервные копии удаленных или перезаписанных файлов. Лучшей альтернативой был бы этот скрипт:
#!/bin/bash
for f in $*; do
tar -rvf /tmp/backup.tar $f
tmp=`echo $f | sed -r 's/^(.{5}).*(\..*)$/$1$2/'`
i=1
while [ -e tmp ]; do
tmp=`echo $tmp | sed "s/\./-$i/"`
i+=1
done
mv -b ./"$f" ./"$tmp"
done
Запустите скрипт так:
find . -exec thescript '{}' \;
Команда find предоставляет множество опций для указания, какие файлы запускать, работает рекурсивно и передает все имена файлов в сценарий. Сценарий выполняет резервное копирование всех файлов с помощью tar (без сжатия), а затем переименовывает их.
Это не лучший сценарий, поскольку он недостаточно умен, чтобы избежать ручного цикла и проверять идентичные имена файлов.