2017-01-18 15 views
0

У меня есть список файлов, пронумерованных в имени файла, начиная, например. на 013 (или на другой счет), но хотите, чтобы их переименовали, чтобы начать с 001. Я не против используемого инструмента (awk, sed, mv, tr, what-ever ...)Как уменьшить число в списке имен файлов с помощью sed или аналогичного инструмента

Пример (до -> после):

img013.tif -> img001.tif 
img014.tif -> img002.tif 
... 

т.д.

Цените любую помощь. 1000 х спасибо, Roland

ответ

2

Поскольку выражение Глоб будет получать список файлов в алфавитном (буквенно-цифровой) для того, вы можете просто использовать это:

#!/bin/bash 

i=0 
# The loop iterates over tif files in alphanumerical order 
for file in *.tif ; do 
    mv -v "$file" "img$(printf "%03d" "$i").tif" 
    i=$((i+1)) 
done 
+0

Спасибо. OMG, так просто. И я не видел этого вчера, потому что я попробовал «реальную» базу переименования при вычислении на -12, маскируя с помощью sed и т. Д. – Roland

+0

Конечно, это может быть только так просто, потому что я предполагаю, что входные файлы появляются в непрерывном как 013, 014, 015, .., я имею в виду без пробелов. В противном случае вам действительно нужно будет выполнить математику, если необходимо сохранить пробелы. – hek2mgl