Я полагаю, что вы можете использовать vi
. Существует обходной путь:
crontab -l > crontab.txt
vi crontab.txt
crontab crontab.txt
Вы можете внести изменения в crontab.txt
.
Предположим, что hg_*[0-9].jpg
заменяется на все файлы, которые вы хотите переименовать, в правильном «прямом» порядке, и что вы хотите записать переименованные файлы в подкаталог renamed
.
Использованиеbash
:
mkdir renamed || exit 1 # fail if this directory exists
names=( hg_*[0-9].jpg )
for (( i=0; i < "${#names[@]}"; ++i )); do
cp "${names[i]}" renamed/"${names[-(i+1)]}"
done
Сначала создается список имен файлов, хранящихся в массиве names
. Цикл проходит через этот сгенерированный список имен и выбирает новое имя для каждого файла со смещением от конца списка. Ни один существующий файл не будет изменен, а копии с новыми именами будут записаны в папку renamed
.
Судя по вашему числовому порядку файлов с 5 цифрами, представляющими его, вы можете просто использовать функции glob оболочки для переименования, как вы хотите
shopt -s nullglob
fileList=(hg_test[0-9]*)
count="${#fileList[@]}"
for file in hg_test[0-9]*; do
echo "$file" "hg_test$(printf "%05d" "$count").jpg"
((count--))
done
В основном это echo
фактическое имя файла с замененным именем файла. Как только вы обнаружите, что имена целы, как и ожидалось, удалите echo
и используйте команду mv
.