Bash 使用exec查找:如何对每个文件执行多步骤条件操作
我在目录结构中有很多php文件,比如/mylibsBash 使用exec查找:如何对每个文件执行多步骤条件操作,bash,find,exec,Bash,Find,Exec,我在目录结构中有很多php文件,比如/mylibs 我想在每个php文件上运行一个简单的php-l$file,检查语法错误 find /mylibs -type f -iname "*.php" -exec php -l {} &>/dev/null \; 这是第一步,&>/dev/null从php中获取详细的输出(是否发现语法错误) php-l返回0,如果没有发现任何错误,根据哪个,我想将它们复制到其他目录,比如/mybin。为了检查这是否如预期的那样有效,我尝试了 find
我想在每个php文件上运行一个简单的
php-l$file
,检查语法错误
find /mylibs -type f -iname "*.php" -exec php -l {} &>/dev/null \;
这是第一步,&>/dev/null从php中获取详细的输出(是否发现语法错误)
php-l
返回0,如果没有发现任何错误,根据哪个,我想将它们复制到其他目录,比如/mybin
。为了检查这是否如预期的那样有效,我尝试了
find /mylibs -type f -iname "*.php" -ok php -l {} &>/dev/null ; echo $? \;
但这只是在终端上打印1,并不要求确认(-ok与交互确认后的-exec相同)
我做错了什么?无法执行此操作吗?您可以使用:
这对你有用吗
find ....|xargs awk '{r=system("php -l "$0" &>/dev/null"); if(!r) system("cp "$0" /path/to/targetDir")}'
我确实找到了-键入f-follow-name“*.php”| xargs awk'{r=system(“php-l“$0”和>/dev/null”);if(!r)system(“echo”$0”)}和我得到
awk:line 1:runawe string constant”)。
我非常喜欢你的awk魔术:D我们只需要让它工作:)你评论中的awk行有问题。系统(“echo”$0[不带“此处”
)或简单地php-l“$path”&>/dev/null&&cp“$path”/mybin
不带丑陋的if
。
find ....|xargs awk '{r=system("php -l "$0" &>/dev/null"); if(!r) system("cp "$0" /path/to/targetDir")}'