Назад | Перейти на главную страницу

что такое команда linux для корня, чтобы удалить папку из домашнего каталога любого пользователя

Привет, я использую Fedora 10. Я использую root. У меня 3 пользователя, и в домашнем каталоге 2 пользователей из 3 есть папка с именем «data». Я хочу удалить эти папки.

Какая команда удалить папку из домашних каталогов всех пользователей.

Спасибо Сунил Кумар Саху

Чтобы быть полностью педантичным, вам, вероятно, следует использовать getent вместо просмотра / 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

Дополнительный если заявление, чтобы убедиться, что вы случайно не удалили файлы.

предполагая, что домашние каталоги находятся в / home, вы должны сделать это:

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

Во-первых, проверьте, что будет удалено (как предложил Дэвид, я должен был упомянуть, что я бы никогда не запустил следующую команду вслепую):

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 {} \;

В найти Команда полезна в этом контексте, потому что она автоматически рекурсивна, не будет случайно удалять файл с тем же именем и будет масштабироваться лучше, чем большинство решений этого типа проблемы (за исключением старой проблемы «слишком много аргументов», с которой столкнулись опытными системными администраторами - см. xargs для этого).

Краткое изложение значения этот конкретный найти команда:

  • maxdepth: не спускаться дальше одного каталога ниже указанного в командной строке (.);
  • тип: найти только каталоги
  • iname: совпадение имени со строкой "data" без учета регистра
  • exec: команда для выполнения для найденных подходящих объектов - в данном случае rm -rf
  • {}: заполнитель для каждого найденного подходящего объекта
  • \ ;: точка с запятой, используемая для завершения каждой команды, экранируется, чтобы остановить расширение оболочки

Надеюсь это поможет!