0 votes

Comment puis-je supprimer tous les fichiers de mon dossier, sauf le sous-dossier Musique ?

Duplicate

Impossible de supprimer tout ce qui se trouve dans un dossier à l'exception de FileA

Je suppose que c'est légèrement similaire à ceci : supprimer [^Music]

Cependant, cela ne fonctionne pas.

4voto

Masi Points 22232

Mettez la commande suivante dans votre ~/.bashrc

shopt -s extglob

Vous pouvez maintenant supprimer tout le reste du dossier, à l'exception du dossier Musique en

rm -r !(Music)

S'il vous plaît, faites attention avec la commande. Il est puissant, mais aussi dangereux.

Je recommande de toujours le tester avec la commande

echo rm -r !(Music)

2voto

A. Rex Points 17899

La commande

rm (ls | grep -v '^Music$')

devrait fonctionner. Si certains de vos "fichiers" sont également des sous-répertoires, vous devez également les supprimer de manière récursive :

rm -r (ls | grep -v '^Music$')

Avertissement : rm -r peut être dangereux et vous pourriez accidentellement supprimer beaucoup de fichiers. Si vous souhaitez confirmer ce que vous allez supprimer, essayez de regarder le résultat de la commande

ls | grep -v '^Music$'

Explication :

  • El ls liste le contenu des répertoires ; sans argument, elle affiche par défaut le répertoire courant.
  • Le symbole du tuyau | redirige la sortie vers une autre commande ; lorsque la sortie de ls est redirigé de cette manière, il imprime les noms de fichiers une par ligne, plutôt que dans un format de colonne comme vous le verriez si vous tapez ls sur un terminal interactif.
  • El grep correspond aux lignes pour les motifs ; la commande -v permet d'imprimer les lignes qui Ne le fais pas. correspondent au modèle.
  • Le motif ^Music$ signifie qu'il faut faire correspondre une ligne commençant et se terminant par Music -- c'est-à-dire uniquement la chaîne de caractères Music ; l'effet de l'option ^ (début de la ligne) et $ (caractères de fin de ligne) peut également être obtenue avec l'option -x comme dans grep -vx Music .
  • La syntaxe command (subcommand) est la façon dont fish prend la sortie d'une commande et la passe comme argument de ligne de commande à une autre.
  • El rm supprime les fichiers. Par défaut, elle ne supprime pas les répertoires, mais la commande -r ("récursif") change cela.

Vous pouvez apprendre à connaître ces commandes et d'autres encore en tapant man command , donde command est ce que vous voulez apprendre.

0voto

msantoro12 Points 11

J'ai donc cherché partout un moyen de supprimer tous les fichiers d'un répertoire, à l'exception de certains répertoires et fichiers que je voulais conserver. Après de nombreuses recherches, j'ai trouvé 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 une expression rationnelle 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 en aurait besoin.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X