【发布时间】:2014-07-09 14:06:51
【问题描述】:
我试图弄清楚如何为 Solaris 10 编写一个 shell 脚本,该脚本使用 if 语句查找盒子上的所有无主文件,打印文件名和位置,如果它们是无主的,则为它们分配根所有者。
在一般的 unix 和 shell 脚本方面相当新。
请帮忙。
【问题讨论】:
标签: bash shell unix solaris solaris-10
我试图弄清楚如何为 Solaris 10 编写一个 shell 脚本,该脚本使用 if 语句查找盒子上的所有无主文件,打印文件名和位置,如果它们是无主的,则为它们分配根所有者。
在一般的 unix 和 shell 脚本方面相当新。
请帮忙。
【问题讨论】:
标签: bash shell unix solaris solaris-10
这样的事情应该可以工作:
find / -nouser -exec echo chown root '{}' \;
一旦您对输出感到满意,请从上面的行中删除 echo 并重新运行。
剖析上面的命令:
find - 你正在执行的命令/ - 开始在/ 查找文件(因此请查看所有文件)-nouser - 仅查找数字用户 ID 在 /etc/passwd 中没有对应条目的文件
-exec - 对我们根据之前的条件找到的所有文件运行以下命令echo chown root '{}' \; - 为每个匹配的文件运行的命令。 {} 被替换为完整的文件名,; 被转义,以便 find 看到它,而不是 shell 将其视为命令结束标记。echo 在那里,您可以在运行可能会搞砸的 chown 命令之前验证适当的命令是否会运行。
所以你运行上面一次,确保它打印出来的命令是好的,然后你重新运行上面的find命令但是你删除了echo,这样chown实际上被执行而不是打印出来就好了。
【讨论】: