Hoe snel bestanden en mappen te verwijderen via terminal (bash shell)

Vanuit terminalvenster:

Als ik de opdracht rmgebruik, kan het alleen bestanden verwijderen.
Als ik de opdracht rmdirgebruik, 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 -rvertelt rmom 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 rmdiris.

De andere twee opties die u moet kennen, zijn -ien -f. -istaat voor interactive; het zorgt ervoor dat rmu vraagt voordat u elk bestand verwijdert. -fstaat voor force; het gaat door en verwijdert alles zonder te vragen. -iis veiliger, maar -fis sneller; gebruik het alleen als je absoluut zekerbent dat je het juiste verwijdert. Je kunt deze specificeren met -rof niet; het is een onafhankelijke instelling.

en zoals gewoonlijk, kunt u schakelaars combineren: rm -r -iis gewoon rm -ri, EN rm -r -fis rm -rf.

Merk ook op dat wat u aan het leren van toepassing is op bashAAN 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.

Other episodes