您好我正在使用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 )。
这个特定查找命令的含义的简要概述:
希望这可以帮助!