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

Я использую команду для поиска файлов, смотрящих из данного каталога в Unix, файлы, заканчивающиеся на *.sas и содержащие строку DB2 . Затем я хочу найти результирующий набор файлов для строк DSN= или DATASRC= а также распечатать строку, содержащую эти строки. Итак, это команда FInd, которую я использую:

 find '/shrproj/' -type f -name '*.sas' -exec grep -il 'DB2' {} \; 2> /dev/null | xargs egrep -Ri 'DSN=|DATASRC=' 

Это дает мне желаемый вывод:

 /shrproj/files/stp_code/aea_aat_stp/icrv3/bin/macro/cnct_2_eaw.sas: ,"DSN=%UPCASE(&the_database.)" /shrproj/files/stp_code/aea_aat_stp/icrv3/bin/macro/cnct_2_eaw.sas: ,"DSN=%UPCASE(&the_database.)" 

Но теперь я также хочу распечатать свойства файла (используя опцию -ls), следуя приведенному выше результату, то есть ниже – это то, что я намереваюсь достичь:

 /shrproj/files/stp_code/aea_aat_stp/icrv3/bin/macro/cnct_2_eaw.sas: ,"DSN=%UPCASE(&the_database.)" /shrproj/files/stp_code/aea_aat_stp/icrv3/bin/macro/cnct_2_eaw.sas: ,"DSN=%UPCASE(&the_database.)" 61522 19 -rwxrwsr-x 1 sas sas 18546 Jun 2 2010 /shrproj/files/stp_code/aea_aat_stp/icrv3/bin/macro/cnct_2_eaw.sas 

Свойства файла в последней строке выше одинаковы при использовании команды find с параметром -ls.

  find /shrproj/files/stp_code/aea_aat_stp/icrv3/bin/macro/cnct_2_eaw.sas -ls 

Итак, как мне добиться этого для каждого файла, используя самую первую команду Find, которую я использую выше?.

Пожалуйста, дайте мне знать. Благодарю.

2 Solutions collect form web for “Прикрепление файла в Unix для данной строки, а затем другой набор строк в этом файле и печать свойств файла тоже”

Просто:

 find '/shrproj/' -type f -name '*.sas' \ -exec grep -iq 'DB2' {} \; \ -exec grep -ie DSN= -e DATASRC= {} \; \ -ls 

Я бы предложил что-то по этому поводу (не могу делать все в одном лайнере) 😉

 OLDIFS="$IFS" IFS=$'\n' for i in $(find '/shrproj/' -type f -name '*.sas'); do G1="$(grep -il 'DB2' "$i")" if [ -n "$G1" ]; then G2="$(egrep -Ri 'DSN=|DATASRC=' "$i")" if [ -n "$G2" ]; then echo "$G1" echo "$G2" ls -l "$i" fi fi done IFS="$OLDIFS" 
  • Предоставлять строки, хранящиеся в файле, в виде списка аргументов для команды?
  • Можете ли вы подключиться к функции .bash_profile?
  • Пакетная копия в несколько каталогов
  • xargs repl_str не расширяет второй заполнитель
  • Xargs и rm с a *
  • Как искать слово во всем содержимом каталога в linux
  • Как вы можете перемещать или копировать определенные файлы из списка текстовых файлов
  • копировать файлы с целевым именем на основе md5, используя find и xargs
  • Сделать xargs в качестве первого параметра
  • Почему xargs заставляет apt-get прерываться?
  • Удаление номеров из имен файлов
  • Interesting Posts

    удалить файлы, соответствующие шаблону

    Почему tmux может быть установлен только один раз на сеанс оболочки?

    Нажмите Alt + <на венгерской клавиатуре (где <требует AltGr)

    Наиболее эффективен для нескольких дистрибутивов на одной машине

    На некоторых экранах входа пользователей не отображаются цвета

    Переадресация в команде примера в `man emerge`: локальная неправильная конфигурация или опечатка?

    Как изменить часовой пояс пользователя?

    Как перенаправить ошибку в файл?

    Как искать все страницы руководства в Linux?

    iptables / pf разрешить только XY-приложение / пользователь?

    Как восстановить отсутствующий файл

    Мне интересно о безопасности CUPS. Что я могу сделать?

    Печать переменной в одиночной кавычки в bash | Странные переменные

    отправлять фальшивые письма с помощью почтовых клиентов

    Как использовать `cat` или` less` в зависимости от количества строк?

    Linux и Unix - лучшая ОС в мире.