在提示符上:
ls | awk '{printf("%s\t\t%s\n", $9, $3);}'
成功打印了应该打印的内容。如果我把它放在一个文件中,我会得到四到五个空行(大约是 输出中的行数ls
):
$ cat awk-file-owner-simple
#!/bin/bash
ls | awk '{printf("%s\t\t%s\n", $9, $3);}'
$ ./awk-file-owner-simple
_
_
_
_
其中_
代表空行(无法使用 stackexchange 的代码格式化程序显示)。
答案1
改成。ls |
ls -l |
您显然在 shell 中使用了别名ls
(ls -l
可能是函数和/或其他选项);用于type ls
查看您实际执行的内容。脚本没有别名,因此它只是运行正常的ls
,并具有单列输出。
答案2
或者使用 coreutils 包中的 stat(1)。
stat --printf="%-20n %U\n" *