2011-12-27 1 views
0
find `pwd` -type f -name "*.ksh" -exec grep -H ".ksh" '{}' \; -print 2>/dev/null 

На выполнении этой команды, результатПозовите КШ Имя

/home/edwprod/Partner_com/bin/edw_etl_job_load.ksh:# Program Name :  edw_etl_job_load.ksh 
/home/edwprod/Partner_com/bin/edw_etl_job_load.ksh 
/home/edwprod/Partner_com/bin/exec_housekeep_main.ksh:# Program Name  : exec_housekeep_main.ksh 
/home/edwprod/Partner_com/bin/exec_housekeep_main.ksh:# Called program : exec_housekeep.ksh 
/home/edwprod/Partner_com/bin/exec_housekeep_main.ksh:#!/bin/ksh 
/home/edwprod/Partner_com/bin/exec_housekeep_main.ksh: nohup ${SHELL_DIR}/exec_housekeep.ksh ${ROOT_ID} ${PLAN_ID} ${P_ACTION} ${LVL} & 
/home/edwprod/Partner_com/bin/exec_housekeep_main.ksh 
/home/edwprod/Partner_com/bin/retrive_pwd_edw.ksh:#  echo " USAGE=> filename.ksh appl_schema" 
/home/edwprod/Partner_com/bin/retrive_pwd_edw.ksh 
/home/edwprod/Partner_com/bin/exec_pr_truncate_hkp.ksh:# Program Name  : exec_pr_truncate_hkp.ksh 
/home/edwprod/Partner_com/bin/exec_pr_truncate_hkp.ksh:# Calling program : exec_pr_truncate_hkp.ksh 
/home/edwprod/Partner_com/bin/exec_pr_truncate_hkp.ksh 
/home/edwprod/Partner_com/bin/exec_pr_post_housekeep.ksh:# Program Name  : exec_pr_post_housekeep.ksh 
/home/edwprod/Partner_com/bin/exec_pr_post_housekeep.ksh:# Calling program : exec_pr_post_housekeep.ksh 
/home/edwprod/Partner_com/bin/exec_pr_post_housekeep.ksh 

команда выполняет поиск всех сценариев оболочки и найти название скриптов вызывается внутри. Мне нужно точно получить имя ksh только из этого результата. Пожалуйста, помогите по этому поводу?

+0

Вы имели в виду использовать только 'find \' pwd \ '-type f -name" * .ksh "' без exec? –

+0

Это даст список ksh внутри папки bin. Я пытаюсь извлечь ksh, используемый внутри скриптов. Итак, если какие-либо скрипты пропущены, я могу создать их до начала тестирования/выполнения. – AruM

ответ

1

Вы могли бы дать этому выстрел (-E для расширенного регулярного выражения, -o для вывода только соответствующий шаблон):

find `pwd` -type f -name "*.ksh" -exec grep -E -o "[a-zA-Z0-9_]*\.ksh" '{}' \; 

Чтобы получить уникальный список:

find `pwd` -type f -name "*.ksh" -exec grep -E -o "[a-zA-Z0-9_]*\.ksh" '{}' \; |sort -u 

Надеется, что это помогает !

+0

@ user1454492: Благодарим за редактирование! –