Сценарий для копирования файлов с желаемым именем

У меня есть проблема, с которой я сталкиваюсь в течение 6-7 часов, и я не могу преодолеть ее, вот почему я прошу Вашу справку. Я должен создать сценарий удара, который получает доступ к папке и переименовывает все файлы от нее с новым именем, сопровождаемым числом, которое представляет alalphabetic hierachy и новое расширение.

Параметры находятся в этом порядке:
(Новое имя, новое расширение и папка, где я ищу).
Как пример:./rename.sh работают .txt Документы
Скажем, это первоначально документ (Документы) содержало:
a.txt
b.txt
c.txt
Поэтому afer запускающий скрипта документ будет containt следующее: work01.txt (от a.txt)
work02.txt (от b.txt)
work03.txt (от c.txt)

Проблема состоит в том, что так или иначе я копирую файлы, и я создаю большую путаницу. Вот сценарий (rename.sh):

#!/bin/bash
if [ -z "$3" ]
   then
    echo "No argumets supplied"
   else
    mic="0"
    i="1"
    max="9"
    for file in `ls $3 | sort -V`; do
        if ( test $i -le 9)
          then
            cp $3/$file $3/$1$mic$i.$2
            rm -r $3/$file
          else
            if ( test $i -ge 9 )
              then          
                cp $3/$file $3/$1$i.$2
                rm -r $3/$file
                fi
          fi
        i=$((i+1))  
    done
    echo "$max"
fi
2
задан 10 January 2016 в 18:38

1 ответ

Если Ваши файлы называют a.txt, b.txt и так далее, то порядок сопоставления по умолчанию должен позволить Вам делать простое расширение шарика имени файла, вместо того, чтобы нуждаться к явно виду версии в файлах. Таким образом, я предложил бы делать что-то больше как

i=1

cd "$dir"
for old in *."$ext"; do 
  printf -v new '%s%02d.%s' "$newbase" $((i++)) "$ext"
  echo mv "$old" "$new"
done

после присвоения newbase="$1", ext="$2", dir="$3" (с подходящим существованием проверяет, конечно). Игра с ним и удаляет echo однажды печатные выходные корректные взгляды.

3
ответ дан 2 December 2019 в 02:53

Другие вопросы по тегам:

Похожие вопросы: