Vanuit terminalvenster:
Als ik de opdracht rm
gebruik, kan het alleen bestanden verwijderen.
Als ik de opdracht rmdir
gebruik, worden alleen lege mappen verwijderd.
Als ik een map heb die is genest met bestanden en mappen in mappen met bestanden enzovoort, is er dan een manier om alle bestanden en mappen te verwijderen zonder al het moeizame typen van opdrachten?
Als het een verschil maakt, gebruik ik de mac bash-shell van terminal, niet Microsoft DOS of linux.
Antwoord 1, autoriteit 100%
rm -rf some_dir
-r “recursief”
-f “forceren” (bevestigingsberichten onderdrukken)
Wees voorzichtig!
Antwoord 2, autoriteit 8%
rm -rf *
Zou alles (mappen en bestanden) in de huidige map verwijderen.
Maar wees voorzichtig!Voer deze opdracht alleen uit als u er absoluut zeker van bent dat u zich in de juiste directory bevindt.
Antwoord 3, autoriteit 2%
Ja, dat is er. De optie -r
vertelt rm
om recursief te zijn, en verwijdert de volledige bestandshiërarchie die is gebaseerd op zijn argumenten; met andere woorden, als het een map krijgt, zal het alle inhoud ervan verwijderen en vervolgens uitvoeren wat in feite een rmdir
is.
De andere twee opties die u moet kennen, zijn -i
en -f
. -i
staat voor interactive; het zorgt ervoor dat rm
u vraagt voordat u elk bestand verwijdert. -f
staat voor force; het gaat door en verwijdert alles zonder te vragen. -i
is veiliger, maar -f
is sneller; gebruik het alleen als je absoluut zekerbent dat je het juiste verwijdert. Je kunt deze specificeren met -r
of niet; het is een onafhankelijke instelling.
en zoals gewoonlijk, kunt u schakelaars combineren: rm -r -i
is gewoon rm -ri
, EN rm -r -f
is rm -rf
.
Merk ook op dat wat u aan het leren van toepassing is op bash
AAN ELK UNIX OS: OS X, Linux, FreeBSD, enz. In feite, rm
‘S SYNTAX IS hetzelfde in vrijwel elke schaal op elk UNIX OS. OS X, onder de kap, is echt een BSD UNIX-systeem.
Antwoord 4
Dus ik keek overal op een manier om alle bestanden in een map te verwijderen, behalve voor sommige mappen en bestanden, ik wilde rondgaan. Na veel zoeken heeft ik een manier bedacht om het te doen met vinden.
find -E . -regex './(dir1|dir2|dir3)' -and -type d -prune -o -print -exec rm -rf {} \;
In wezen gebruikt het Regex om de mappen te selecteren om uit te sluiten van de resultaten, verwijdert vervolgens de resterende bestanden. Ik wilde het hier gewoon uitzetten voor het geval iemand anders het nodig had.