linux 中 root 用户从任何用户的主目录中删除文件夹的命令是什么

linux 中 root 用户从任何用户的主目录中删除文件夹的命令是什么

你好,我正在使用 Fedora 10。我以 root 身份使用。我有 3 个用户,其中 2 个用户的主目录中有一个名为“data”的文件夹。我想删除这些文件夹。

从所有用户的主目录中删除文件夹的命令是什么。

感谢 Sunil Kumar Sahoo

答案1

为了更加严谨,你应该使用盖特恩而不是查看 /etc/passwd,以防您有来自其他来源(例如 NIS、SQL、LDAP 等)的用户。要获取主目录列表,您可以使用以下命令:

getent passwd | cut -d: -f6

并删除所有用户的所有数据目录:

for home in $(getent passwd | cut -d: -f6) ; do
    if [ -d "$home/data" ]; then
        rm -rf "$home/data"
    fi
done

额外的如果声明是为了确保您不会意外删除文件。

答案2

假设主目录位于 /home,您可以执行以下操作:

for user in 'user1' 'user2'
do
rm -rf /home/$user/data
done

答案3

首先,检查要删除的内容(正如 David 所建议的,我应该提到这一点,我永远不会盲目运行下一个命令):

ls -al /home/*/data 

如果没有错误,则执行删除:

rm -rf /home/*/data

答案4

# cd /home/
# find . -maxdepth 2 -type d -iname data -exec rm -rf {} \;

寻找命令在这种情况下很有用,因为它是自动递归的,不会意外删除同名文件,并且比大多数此类问题的解决方案具有更好的扩展性(经验丰富的系统管理员遇到的旧“参数太多”问题除外 - 请参阅参数为了那个原因)。

快速了解一下具体的寻找命令:

  • maxdepth:不要超出命令行(.)给出的目录下的一个目录;
  • 类型:仅查找目录
  • iname:不区分大小写地匹配名称与字符串“data”
  • exec:针对找到的匹配对象执行的命令 - 在本例中为 rm -rf
  • {}:找到的每个匹配对象的占位符
  • \;:用于结束每个命令的分号被转义以停止 shell 扩展

希望这可以帮助!

相关内容