【问题标题】:Shell Script to Find ownerless Files查找无主文件的 Shell 脚本
【发布时间】:2014-07-09 14:06:51
【问题描述】:

我试图弄清楚如何为 Solaris 10 编写一个 shell 脚本,该脚本使用 if 语句查找盒子上的所有无主文件,打印文件名和位置,如果它们是无主的,则为它们分配根所有者。

在一般的 unix 和 shell 脚本方面相当新。

请帮忙。

【问题讨论】:

    标签: bash shell unix solaris solaris-10


    【解决方案1】:

    这样的事情应该可以工作:

    find / -nouser -exec echo chown root '{}' \;
    

    一旦您对输出感到满意,请从上面的行中删除 echo 并重新运行。

    剖析上面的命令:

    • find - 你正在执行的命令
    • / - 开始在/ 查找文件(因此请查看所有文件)
    • -nouser - 仅查找数字用户 ID 在 /etc/passwd 中没有对应条目的文件
    • -exec - 对我们根据之前的条件找到的所有文件运行以下命令
    • echo chown root '{}' \; - 为每个匹配的文件运行的命令。 {} 被替换为完整的文件名,; 被转义,以便 find 看到它,而不是 shell 将其视为命令结束标记。

    echo 在那里,您可以在运行可能会搞砸的 chown 命令之前验证适当的命令是否会运行。

    所以你运行上面一次,确保它打印出来的命令是好的,然后你重新运行上面的find命令但是你删除了echo,这样chown实际上被执行而不是打印出来就好了。

    【讨论】:

    • 我如何把它变成一个 if 语句
    • 你能用你想要完成的事情更新你的问题吗?
    • 目前还不清楚……“if”语句的意义何在?
    • @SeanBright 好吧,我想知道将文件分配给根目录不会对所有文件都有效,除非它全部在一个数组中?
    • 没有理由使用数组,除非这是更大脚本的一部分。如果它是较大脚本的一部分,请在问题中包含该脚本中的其他内容。否则,我已经详细说明了答案中的命令的作用。
    猜你喜欢
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多