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

您好我正在使用Fedora 10.我正在使用作为根。 我有3个用户,在3个用户的2个用户的主目录中有一个名为“data”的文件夹。我想删除这些文件夹。

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

感谢Sunil Kumar Sahoo

要完全迂腐,你应该使用getent而不是查看/ etc / passwd,以防万一你有用户形成其他来源,如NIS,SQL,LDAP等。要获得homedirectories列表,你可以使用这个:

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 

额外的if语句是为了确保您不会意外删除文件。

假设主目录在/ home,你可以这样做:

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

首先,检查一下将要删除的内容(正如David所build议的那样,我应该提一下,我不会盲目地运行下一个命令):

 ls -al /home/*/data 

而且,如果没有问题,请执行删除操作:

 rm -rf /home/*/data 

要一步删除多个用户帐户中的文件夹,可以使用

 # rm -rf /path/to/home/(user1|user2|user3|...)/data 

请注意,这只会删除文件夹而不是用户。 对于每个用户,你都需要一个快速的Awk命令,比如

 $ grep "/home" /etc/passwd | awk -F":" '{ print $1 }' 

获得一个列表。 awk命令的问题在于,它不知道没有主目录的系统用户和没有主目录的系统用户之间的区别。

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

find命令在这个上下文中是有用的,因为它是自动recursion的,不会意外地删除一个相同名称的文件,并且比这个types的问题的大多数解决scheme的扩展性更好(除了旧的“太多的参数”问题碰到有经验的系统pipe理员 – 见xargs )。

这个特定查找命令的含义的简要概述:

  • maxdepth:不低于命令行(。)下给出的一个以下的目录;
  • 键入:只能查找目录
  • iname:不区分大小写匹配名称与string“data”
  • exec:命令对发现的匹配对象执行 – 在这种情况下,rm -rf
  • {}:find每个匹配对象的占位符
  • \;:用来结束每个命令的分号被转义以停止shell扩展

希望这可以帮助!