2013-06-20 3 views
1

У меня есть имя файла, например, «FAI_4O57A», в котором всегда есть три алфавита, за которыми следуют символы подчеркивания и цифры переменной длины от 1 до 7 (длина), за которыми следует единый алфавит.Автоматические имена файлов с использованием awk

Я хочу извлечь первые четыре символа и заменить другие цифры моими номерами, такими как 000001, чем 000002 и так далее. (Для автоматического номера имен файлов.).

Как это сделать с помощью awk. или sed. Любая помощь будет оценена. Спасибо.

ответ

1

Попробуйте сделать это:

rename -n '$c++; s/^(.{4}).*/sprintf("%s%05d", $1, $c)/e' [A-Z][A-Z][A-Z]_* 

Вам нужно в Perl rename см this

Снимите -n переключатель, когда ваши тесты OK (сухого режима запуска).

Ex. :

$ ls -1 
DEF_FAI_4O58A 
FAI_4O57A 
FTH_4O59A 
box.py 
index.html 
robots.txt 
test.html 

$ rename -n '$c++; s/^(.{4}).*/sprintf("%s%04d", $1, $c)/e' [A-Z][A-Z][A-Z]_* 
DEF_FAI_4O58A -> DEF_0001 
FAI_4O57A -> FAI_0002 
FTH_4O59A -> FTH_0003 

Если вы действительно хотите сделать это:

printf '%s\n' [A-Z][A-Z][A-Z]_* | 
    awk '{c++; printf("%s%04d\n", substr($1, 0, 4), c)}' 

Редактировать:

, если вам нужно обработать столбцы в YOUR_OWN_FILE:

rename -n '$c++; s/^(.{4}).*/sprintf("%s%04d", $1, $c)/e' $(awk '{print $2}' YOUR_OWN_FILE) 
+0

У меня есть 2 колонки в файле и coummns Ist содержит имя файла и второй столбец абсолютный путь файла. например. FAE_12A дома/пользователей/some_direcotry/FAE_12A.wav Как я должен изменить данный формат для Ist ​​columnn Спасибо, – KKK

+0

В виде _file_ или в _file name_? –

+0

В текстовом файле 2 столбца, Ist имя файла столбца и второй столбец path_to_file. – KKK

2

Один из способов с awk:

awk '{cnt=sprintf("%06d", ++s);$1=substr($1,1,4) cnt}1' inputFile