我试图使一个脚本,将打印所有文件的信息在给定目录下的所有者,组,文件名,然后由逗号分隔的权限的顺序。我编写的代码在终端中运行时运行良好,但是当我尝试在一个目录为$1的脚本中运行它时,它只打印一次所有者名,没有其他内容。我忽略了什么?
代码如下:
ls -l | awk '{print $3, ",", $4, ",", $9, ", " $1}'
在终端中可以正常工作,但是
ls -l "$1" | awk '{print $3, ",", $4, ",", $9, ", " $1}'
run from $script.sh directoryname只输出一次用户名,仅此而已。
不要解析ls
。使用stat
代替
stat -c '%U,%G,%n,%A' "$1"/*
将目录名称放在输出中,因此您可能想要cd "$1"
然后使用stat ... *
另一个选项:find
find "$1" -maxdepth 1 -type f -printf '%u,%g,%P,%Mn'