Как переименовать текстовые файлы в соответствии с их содержанием? - PullRequest
0 голосов
/ 12 октября 2011

Моя ОС - Ubuntu;У меня есть каталог с текстовыми файлами;каждый файл содержит строку с уникальным идентификатором

IDtag IDnumber

Местоположение строки в текстовом файле является случайным, однако легко распознать его как простое регулярное выражение

^IDtag ID [0-9] *

Как переименовать файлы в соответствии с их идентификаторами?Т.е. каждый файл должен получить новое имя IDnumber.txt. Я могу запустить скрипт оболочки Linux или Perl.

Ответы [ 2 ]

1 голос
/ 12 октября 2011

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

for i in a b c; do echo mv $i `egrep -m1 -e 'IDtag ID[0-9]*' $i | sed -e 's/IDtag ID//'`; done

Если mv s верны - удалите эхо-бит

0 голосов
/ 12 октября 2011

Звучит как домашнее задание.Но я бы частично ответил на ваш вопрос.ниже приведен список всех команд, которые должны быть выполнены для переименования файлов.

grep ^IDtag * | awk '{split($1,a,":");print "mv",a[1], $2".txt"}'

ivory.192> grep ^IDtag * | awk '{split($1,a,":");print "mv",a[1], $2".txt"}'
mv 000001 000001.txt
mv temp2 000002.txt
ivory.193> 

поместите это в цикл for и выполните каждую строку в сценарии оболочки.

дополнительно кЕсли у вас есть дорожка, вы можете перенаправить вывод в файл, дать файлу разрешения на выполнение и выполнить его как скрипт. Это будет соответствовать вашим целям, кроме того, у вас также есть список файлов, которые были переименованы.

...