我打算修改 ls -la 的输出以显示file
命令的输出。下面的命令可以很好地达到这个目的
find /opt -type f | xargs ls -let | awk 'BEGIN { OFS="\t" } { sprintf("file \"%s\"", $10) | getline type; print type,$1,$3,$4 }' | tr ":" "\t"
ldd
现在,如果文件类型输出与模式“ELF.*execuatble”匹配,我想修改它以显示命令的输出(逗号分隔)。我尝试了各种组合来匹配 awk 中使用的关键字if
,如果匹配成功,则运行ldd
,但无济于事。
这可能吗?
操作系统是Solaris,我使用ksh。
答案1
awk 提供模式匹配
awk '/ELF*.executable/ { ... }'
编辑:在你的情况下:
find /opt -type f | xargs ls -let | awk 'BEGIN { OFS="\t" } /ELF*.executable/ { sprintf("file \"%s\"", $10) | getline type; print type,$1,$3,$4 }' | tr ":" "\t"