Comment supprimer rapidement des fichiers et des répertoires via un terminal (shell bash) [fermé]

331

Depuis la fenêtre du terminal:

Lorsque j'utilise la rmcommande, elle ne peut supprimer que des fichiers.
Lorsque j'utilise la rmdircommande, elle supprime uniquement les dossiers vides.

Si j'ai un répertoire imbriqué avec des fichiers et des dossiers dans des dossiers contenant des fichiers, etc.

Si cela fait une différence, j'utilise le shell mac bash du terminal, pas Microsoft DOS ou linux.

baduker
la source
Au cas où vous souhaiteriez restaurer les fichiers à l'avenir, n'utilisez pas "rm" pour de tels cas. Utilisez "rm-trash": github.com/nateshmbhat/rm-trash
Natesh bhat

Réponses:

761
rm -rf some_dir

-r "récursif" -f "forcer" (supprimer les messages de confirmation)

Faites attention!

Jim Lewis
la source
27
+1 et heureux d'avoir ajouté le "Soyez prudent!" partie ... définitivement une commande "Sawzall" qui peut rapidement transformer une bonne journée en mauvaise .. si elle est maniée avec insouciance.
itsmatt
5
comme ne faites pas "# rm -rf /" vous regretterez que:
DarthVader
1
@itsmatt: Vous savez ce qu'ils disent ... donnez à quelqu'un un Sawzall, et tout à coup chaque problème ressemble à des heures de plaisir!
Jim Lewis
164
Sur un Mac? Faites ceci à la place: brew install trashalors trash -rf some_dirceci déplacera le répertoire indésirable dans votre corbeille au lieu de simplement disparaître le style Prestige dans l'éther. ( source )
zakdances
4
L'approche "poubelle" est super!
anopres
59
rm -rf *

Supprimerait tout (dossiers et fichiers) du répertoire actuel.

Mais fais attention! N'exécutez cette commande que si vous êtes absolument sûr que vous êtes dans le bon répertoire.

Prine
la source
17
rm -rf est une commande très risquée, vous devez toujours être prudent et spécifier le dossier à supprimer.
eomeroff
8
Que diriez-vous de courir en ls -R *premier pour voir ce qui sera supprimé parrm -rf *
Hammad Khan
Cela fonctionne bien pour moi, merci.
Monica Hübner
14

Oui il y a. L' -roption indique rmêtre r ecursive, et de supprimer toute la hiérarchie de fichiers racine à ses arguments; en d'autres termes, si on lui donne un répertoire, il supprimera tout son contenu, puis effectuera ce qui est effectivement un rmdir.

Les deux autres options que vous devez connaître sont -iet -f. -isignifie i nteractive; il rmvous invite avant de supprimer chaque fichier. -fsignifie f orce; il va de l'avant et supprime tout sans demander. -iest plus sûr, mais -fplus rapide; ne l'utilisez que si vous êtes absolument sûr de supprimer la bonne chose. Vous pouvez les spécifier avec -rou non; c'est un cadre indépendant.

Et comme d'habitude, vous pouvez combiner des commutateurs: rm -r -ic'est juste rm -ri, et rm -r -fc'est rm -rf.

Notez aussi que ce que vous apprenez applique bashsur tous les Unix OS: OS X, Linux, FreeBSD, etc. En fait, rmla syntaxe « est le même dans presque tous les shell sur tous les Unix OS. OS X, sous le capot, est vraiment un système BSD Unix.

Antal Spector-Zabusky
la source
1
Bien que toutes les options mentionnées ci-dessus soient standard parmi toutes les versions Unix répertoriées, il existe également quelques différences. Par exemple, OS X (mais pas Linux) a "rm -d", ce qui supprime les fichiers ou les répertoires vides. Pourtant, +1 pour le point que OS X est BSD en interne.
David Gelhar
Vrai --- le sous - ensemble POSIX est (à peu près) garanti de fonctionner de manière cohérente sur Unixen, mais tout ce qui en dehors peut ou non.
Antal Spector-Zabusky
2

Je cherchais donc partout un moyen de supprimer tous les fichiers d'un répertoire, à l'exception de certains répertoires et des fichiers que je voulais garder. Après de nombreuses recherches, j'ai imaginé un moyen de le faire en utilisant find.

find -E . -regex './(dir1|dir2|dir3)' -and -type d -prune -o -print -exec rm -rf {} \;

Essentiellement, il utilise regex pour sélectionner les répertoires à exclure des résultats, puis supprime les fichiers restants. Je voulais juste le mettre ici au cas où quelqu'un d'autre en aurait besoin.

msantoro12
la source