你好,我正在使用 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 扩展
希望这可以帮助!