Как пакетно переименовать файлы с помощью комбинации циклов в bash?

Вы можете просмотреть все дистрибутивы GNU/Linux на http://www. .distrowatch.com/ .

В настоящее время я использую Gnu/Linux Fedora 25, которую можно установить с Live CD.

Предустановлен LibreOffice, но вам необходимо установить veracrypt с этого сайта https://fedora.pkgs.org/25/rpm-sphere/veracrypt-1.19-3.2.x86_64.rpm.html

0
11.05.2016, 05:29
3 ответа

Вы хотите переименовать в обратном порядке :

counter=$((final_number + 1))
for index in {final_number..0}; do
  mv "icon_${index}.icns" "icon_${counter}.icns";
  let counter--;
done
3
28.01.2020, 02:20

Инициализируйте свой счетчик со значением 1 вместо 0, и увеличивайте его после завершения перемещения. Тогда вам не нужно будет запускать вторичный сценарий bash только для переименования файлов, вы должны адресовать его в исходном сценарии.

Кроме того, почему, когда вы увеличиваете свой счетчик, вы добавляете «|| true»? это не имеет смысла. Попробуйте этот код

counter=1
for img in SOURCE_FOLDER/*.png; do
  mv "SOURCE_FOLDER/icon_$counter.icns" "DESTINATION_FOLDER/${img%.*}.icns"
  let counter++
done
0
28.01.2020, 02:20

Ваши проблемы будут решены с помощью следующего кода:

#!/bin/sh

i=0
for img in `ls SOURCE_FOLDER_W_GOOD_NAMES/*.png`; do
        mv $img DESTINATION_FOLDER_W_INCREMENT_NAMES/icon_$i.icns
        i=$((i+1));
done
1
28.01.2020, 02:20

Теги

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