0 votes

Si un dossier contient des sous-dossiers et des fichiers, existe-t-il une commande Terminal permettant de supprimer certains sous-dossiers sans supprimer aucun fichier ?

Si la structure du dossier est :

parentFolder
 file1.rtf
 file2.rtf
... #there are many more files.
 moreFiles.rtf
 subFolder1
 subFolder2
 subFolder3
... #there are many more subfolders.
 moreSubFolders

Comment puis-je supprimer tous les sous-dossiers sauf subFolder1 sans supprimer aucun des fichiers ?

Je ne veux pas avoir à nommer chaque dossier qui doit être supprimé.

Je ne veux pas non plus avoir à nommer chaque fichier qui ne doit pas être supprimé.

Je veux une commande qui ne supprime que les dossiers, pas les fichiers, et qui permette à l'utilisateur d'exclure certains dossiers de la suppression.

1voto

nohillside Points 82672

Les suppressions basées sur des règles ont tendance à être délicates et peuvent facilement mal tourner. Dans votre cas, la méthode suivante pourrait fonctionner

find "parentFolder" -depth 1 -type d ! -name subFolder1 -ok rm -r -- '{}' \;

Ce site

  • ne regarde qu'un niveau en dessous parentFolder ( -depth 1 )
  • ne regarde que les répertoires ( -type d )
  • bennes subFolder1 ( ! -name subFolder1 )
  • demande la suppression de tous les répertoires non skippés ( -ok rm -r -- '{}' \; )

PS : Pour sauter plusieurs répertoires, utilisez ! \( -name subFolder1 -o -name subFolder2 \) pour supprimer sans demander l'autorisation d'utiliser -exec rm -r -- '{}' + .

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X