如何在awk字段的输出上执行ls命令

时间:2011-05-03 18:48:54

标签: bash unix awk ls

这会将目录作为参数:

#!/bin/bash

ls -l $1 |awk '$3!=$4{print $9}' 

现在我需要的是能够对从awk语句中找到的文件执行另一个ls -l

是的,这听起来很愚蠢,而且我知道其他三种方法可以做到这一点,但不是用awk。

4 个答案:

答案 0 :(得分:2)

使用awk系统命令:

ls -l $1 |awk '$3!=$4{system("ls -l " $9)}'

答案 1 :(得分:1)

要使用的命令是xargs

man xargs

应该提供一些线索。

答案 2 :(得分:0)


#!/bin/bash

ls -l $1 | awk '$3!=$4{ system( "ls -l '$1'/" $9}' 

答案 3 :(得分:0)

如果允许调整您可以尝试执行的第一个ls -l

ls -ld "$1"/* |awk '$3!=$4{print $9}' | xargs ls -l

在这种情况下,ls将在目录前添加前缀。但我不知道这是否是可移植行为。