Переименование файлов с номерами в соответствующие 1-n числа в порядке

Таким образом, у меня есть куча файлов в папке, где ведущее число представляет порядок файла, но они не являются обычным 1-n, например:

2-file.txt 4-file.txt 7-file.txt 12-file.txt 

и я хочу иметь их в последовательном порядке от 1 до «количества файлов», сохраняя числовой порядок, поэтому:

 1-file.txt 2-file.txt 3-file.txt 4-file.txt 

где 1-file.txt является предыдущим 2-file.txt, 2-file.txt является предыдущим 4-file.txt и так далее

One Solution collect form web for “Переименование файлов с номерами в соответствующие 1-n числа в порядке”

Этот скрипт должен выполнить эту работу за вас. Обязательно переключите его с DEBUG на LIVE:

 #!/bin/sh list=`ls *-file.txt | sort -n` i=1 for f in $list do #DEBUG MODE echo "mv $f $i-file.txt" #LIVE MODE #mv $f $i-file.txt i=$(($i + 1)) done 

И вот версия без жесткого кодирования:

 #!/bin/sh if [ -z $1 ] then echo " You need to pass a prefix. For example: ${0##*/} -file.txt " exit 1 fi list=`ls *${1} | sort -n` i=1 for f in $list do #DEBUG MODE echo "mv $f ${i}${1}" #LIVE MODE #mv $f ${i}${1} i=$(($i + 1)) done 
  • сохранить только определенную часть строки в определенном столбце
  • эталонная проблема при использовании sed
  • Извлечение столбца из текста, разделенного запятыми.
  • Как использовать awk или sed для преобразования csv в более читаемый формат
  • Какой пакет имеет GNU для Solaris?
  • Как следить и искать в файле, проходящем через фильтр, менее
  • bash для переменной цикла, не меняющейся
  • Сравните два файла и напечатайте только первое слово строк, которые не совпадают со строкой
  • Как добавить несколько расширений в строку с sed?
  • выходное содержание во втором случае
  • Самый быстрый и самый основной способ заменить «\ r \ n» на «\ n» в файле?
  • Linux и Unix - лучшая ОС в мире.