jakie jest polecenie linuxowe dla roota, aby usunąć folder z katalogu domowego dowolnego użytkownika


Cześć, używam Fedory 10. Używam roota. Mam 3 użytkowników, aw katalogu domowym 2 z 3 użytkowników znajduje się folder o nazwie „data”. Chcę usunąć te foldery.
Jakie jest polecenie usunięcia folderu z katalogów domowych wszystkich użytkowników.
Dzięki Sunil Kumar Sahu
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Aby być całkowicie pedantycznym, prawdopodobnie powinieneś użyć

getent

zamiast patrzeć na/etc/passwd, na wypadek gdybyś miał użytkowników z innych źródeł, takich jak NIS, SQL, LDAP itp. Aby uzyskać listę katalogów domowych, możesz użyć tego:
getent passwd | cut -d: -f6

Aby usunąć wszystkie katalogi danych dla wszystkich użytkowników:
for home in $(getent passwd | cut -d: -f6) ; do
if [ -d "$home/data" ]; then
rm -rf "$home/data"
fi
done

Dodatkowy

Jeśli

aplikacji, aby upewnić się, że przypadkowo nie usunąłeś plików.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

zakładając, że katalogi domowe znajdują się w/home, powinieneś zrobić to:
for user in 'user1' 'user2'
do
rm -rf/home/$user/data
done
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Najpierw sprawdź, co zostanie usunięte (jak zasugerował David, powinienem był wspomnieć, że nigdy nie wykonałbym tego polecenia na ślepo):
ls -al/home/*/data 

A jeśli wszystko jest w porządku, zrób usunięcie:
rm -rf/home/*/data
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Aby po prostu usunąć folder na wielu kontach użytkowników w jednym kroku, możesz użyć
# rm -rf/path/to/home/(user1|user2|user3|...)/data

Zwróć uwagę, że spowoduje to tylko usunięcie folderu, a nie użytkownika. Dla każdego użytkownika potrzebujesz szybkiego polecenia Awk, takiego jak
$ grep "/home"/etc/passwd | awk -F":" '{ print $1 }'

Aby uzyskać listę. Problem z poleceniem awk polega na tym, że nie zna ono różnicy między użytkownikiem systemu, który nie ma katalogu domowego, a użytkownikiem, który go ma.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

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

W

znaleźć

Polecenie jest przydatne w tym kontekście, ponieważ jest automatycznie rekurencyjne, nie usunie przypadkowo pliku o tej samej nazwie i będzie skalowane lepiej niż większość rozwiązań tego typu (z wyjątkiem starego problemu „zbyt wiele argumentów” napotkanego przez doświadczonych sysadmins - cm.

xargs

dla tego).
Podsumowanie znaczenia

to

konkretny

znaleźć

zespół:
  • maxdepth: nie przechodź dalej niż jeden katalog poniżej określonego w linii poleceń (.);
  • typ: znajdź tylko katalogi
  • iname: dopasuj nazwę do ciągu „data”, bez rozróżniania wielkości liter
  • exec: polecenie do wykonania na znalezionych pasujących obiektach - w tym przypadku rm -rf
  • {}: symbol zastępczy dla każdego znalezionego pasującego elementu
  • \ ;: średnik używany do kończenia każdego polecenia, uciekający do zatrzymania interpretacji powłoki

Mam nadzieję że to pomoże!

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się