2013-09-10 2 views
0

Я новичок в perl, и в настоящее время я застрял в этой проблеме.Использование grep с perl для поиска файлов

  1. У меня есть несколько файлов в директории
  2. Я хочу, чтобы проверить их имена, и посмотреть, если имя файл соответствует определенному ключевому слову (не все имя файла). Итак, в заключение, я хочу захватить определенные файлы, у которых есть определенное ключевое слово, а затем обработать их.

я что-то вроде

grep -rl "keyword" /.; 
#where does the filenames get stored? let's say in $_? 
#foreach valid file, do something 

с некоторых веб-сайт я нашел попытки, но это не похоже на работу? Помогите пожалуйста, спасибо!

+1

Grep является командой Баш. Вы действительно хотите использовать Perl? Если вы просто хотите найти ключевое слово в имени файла, вы можете пойти с ключевым словом 'find * * – EverythingRightPlace

+0

, если это проблема с bash, вы можете« найти -type f -name »ключевое слово *. * '| Xargs дальнейшей обработки' – Kent

+0

Что такое команда bash? также, im, используя это как скрипт/программу синтаксического анализа, мне просто нужно было найти файлы, которые я хотел продолжить разбор. –

ответ

2

Как насчет

ls *keyword* 

Если вы пытаетесь сделать это в Perl

@files = glob("*keyword*"); 
for $file (@files) 
{ 
    print "$file\n"; 
} 

Обратите внимание, что grep в Perl является основной функцией, но это не имеет ничего общего с регулярными выражениями. Это больше похоже на SQL where; он фильтрует массив в подматрицу, применяя к каждому элементу функцию (которая может быть или не быть регулярным выражением).

Если GLOB выражения не достаточно хорошо, вы можете сделать

@files = grep /(fun[kK]y_)keyword?/ glob("*"); 
+0

ahhh спасибо! да, я новичок в perl, поэтому я не знаю разницы между grep и glob (что, честно говоря, я не знаю) –

+0

также, если я знаю, что в некоторых папках будет только один файл с ключевым словом, могу ли я просто сделать $ file = glob ("* keyword *"); распечатать $ file? и в чем разница между glob («keyword»), которая не работает, и glob («* keyword *»)? спасибо!! –

+0

@ps_chou Используйте обратные ссылки для ввода кода в комментарии '' like so'' – TLP

Смежные вопросы