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.
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.
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)
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 :
ls
liste le contenu des répertoires ; sans argument, elle affiche par défaut le répertoire courant.|
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.grep
correspond aux lignes pour les motifs ; la commande -v
permet d'imprimer les lignes qui Ne le fais pas. correspondent au modèle.^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
.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.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.
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 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.