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

上执行这个命令,结果是抓取KSH NAME

/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 

的命令搜索所有的shell脚本,找到脚本的名称被称为内。我需要从这个结果中完全获取ksh名称。请帮忙吗?

+0

你的意思是不使用exec而只是使用'find \'pwd \'-type f -name“* .ksh”'? – 2011-12-27 10:39:52

+0

这将给bin文件夹内的ksh列表。我正在尝试获取脚本中使用的ksh。因此,如果任何脚本错过了,我可以在开始测试/执行之前创建。 – AruM 2011-12-27 10:42:59

回答

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:感谢您的编辑! – 2012-06-27 14:57:39