这个问题我已经碰壁了。 当我运行 ls -l 命令时。我得到了这个结果(为了简单起见,我故意省略了下面第 5 列之后的列)
-rw-r--r--。 1 位 leslie 用户 8 月 26 日 00:14
-rw-r--r--。 1 雪莉根 8 月 26 日 00:14
-rw-r--r--。 1 玛丽域用户 8 月 26 日 00:14
我想打印组所有权列。通过几种方式,我可以打印第 4 列,即组所有权列。问题是某些组名中有空格。例如:-“域用户”。 ls -l | awk '{print $4}' 正在像这样打印第 4 列
用户
根
域名
我想要的输出是
用户
根
域用户
请帮忙。我被困在这里很多天了。 我真的需要一些智能机制来检测域用户或其他具有空间名称的组是属于组所有者类别的组名。我的组来自 Active Directory。这就是为什么有些里面有空间的原因。
最佳答案
您正在解析 ls
的输出。不要那样做。部分原因参见:Why you shouldn't parse the output of ls(1)
作为替代方案,请尝试 GNU find
。这将打印组名:
find . -maxdepth 1 -printf '%g\n'
如果要在组名前显示文件名:
find . -maxdepth 1 -printf '%-20f %g\n'
找到唯一的组名
上面的输出可以发送到 sort -u
以仅选择唯一的名称:
find / -path /proc -prune -o -printf '%g\n' | sort -u
关于Bash 脚本 : Printing a column with having space between the string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39304691/