我正在寻找一个将返回目录所有者的命令,并且仅此 - 例如解析ls -lat
命令的正则表达式或类似的东西?我想在另一个脚本中使用结果。
答案1
答案2
解析 的输出ls
很少是一个好主意,但获取前几个字段是一个例外,它实际上适用于所有“传统”unices(它不适用于某些平台,例如允许用户名中包含空格的 Windows 实现)。
ls -ld /path/to/directory | awk 'NR==1 {print $3}'
另一种选择是使用命令,但shell 的stat
问题是有多个具有不同语法的命令,因此在 shell 脚本中是不可移植的(即使跨 Linux 安装也是如此)。stat
stat
请注意,测试给定用户是否是所有者是一个不同的命题。
if [ -n "$(find . -user "$username" -print -prune -o -prune)" ]; then
echo "The current directory is owned by $username."
fi
if [ -n "$(find . -user "$(id -u)" -print -prune -o -prune)" ]; then
echo "The current directory is owned by the current user."
fi
答案3
也可以使用 GNU 来做到这一点find
:
find "$directoryname" -maxdepth 0 -printf '%u\n'
这在 GNU 系统之外是不可移植的,但我很惊讶地发现它在 Linux 发行版中不起作用。
答案4
ls -ld /path/to/file/or/directory | cut -d' ' -f3