Как найти полные имена файлов в UNIX, если я знаю только расширение файла. - PullRequest
1 голос
/ 22 декабря 2011

Предположим, у меня есть файл, который содержит другие имена файлов с некоторым расширением [.dat, .sum и т. Д.].

текстовый файл содержит

 gdsds sd8ef g/f/temp_temp.sum 
 ghfp hrwer h/y/test.text.dat
 if[-r h/y/somefile.dat] then....

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

temp_temp.sum
test.text.dat
somefile.dat

Я использую AIX unix, в котором имя файла grep -ow [a-zA-Z_] не работает, поскольку для AIX -o не указан ключ.

1 Ответ

1 голос
/ 22 декабря 2011

sed это хорошо, но, поскольку у вас есть ряд типов «записей», возможно, awk может помочь.

Моя цель - любое «слово», найденное awk, в котором есть «/»,затем возьмите это слово, удалите все до последнего символа '/', оставив только имя файла.

{ 
   cat -<<EOS
   gdsds sd8ef g/f/temp_temp.sum 
   ghfp hrwer h/y/test.text.dat
   if[-r h/y/somefile.dat] then....
EOS
} \
| awk '{ 
          for (i=1; i<=NF;i++) {
            if ($i ~ /.*\//) {
              fName=$i
              sub(/.*\//, "", fName)
              # put any other chars you to to delete inside the '[ ... ]' char list
              sub(/[][]/, "", fName)
              if (fName) {
                 print file
              }
            }
         }
       }'

output

temp_temp.sum
test.text.dat
somefile.dat

(Кроме того, ваш вопросзаголовок не соответствует вашему описанию, если я что-то упустил, пожалуйста, обновите ваш вопрос и оставьте комментарий с указанием правок (или вы можете отредактировать свой заголовок).)

PSДобро пожаловать в StackOverflow.Пожалуйста, не забудьте принять ответ, который наилучшим образом решит вашу проблему, если таковой имеется, нажав на значок галочки, http://i.imgur.com/uqJeW.png. Когда вы видите хорошие вопросы и ответы, проголосуйте, используя серые треугольники, http://i.imgur.com/kygEP.png. Обратите внимание, что«Зачисление» очков репутации другим не означает вычитание очков репутации (если вы не отправили награду).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...