3 votes

Déplacement automatique des fichiers vers un dossier parent + suppression du sous-dossier

J'essaie de trouver comment déplacer automatiquement les fichiers d'un dossier vers son dossier parent et supprimer le dossier d'origine. Pour illustrer, voici ma structure :

Parent Folder
    – Subfolder
            – File.avi
            - File2.avi
            - Otherfile.trash

Je veux déplacer tous mes fichiers .avi vers l'ordinateur. Parent Folder et se débarrasser de Subfolder en tout ( Subfolder ne sera toujours pas vide après le déplacement de ces fichiers, mais je veux le supprimer ainsi que son contenu restant).

J'ai joué avec Hazel mais je pense que ma logique n'est pas la meilleure et je n'arrive pas à comprendre. Est-ce possible avec Hazel, Automator ou les deux ?

Merci d'avance !

1voto

M K Points 10691

La solution suivante déplace tous (et uniquement) les fichiers ".avi" des sous-dossiers (d'un niveau de profondeur) vers le dossier parent et supprime les sous-dossiers. Ce n'est peut-être pas la solution la plus optimale, car il existe de nombreuses façons différentes d'écrire des scripts de shell pour résoudre un problème.

Hypothèses et restrictions :

  1. Seuls les fichiers ".avi" seront déplacés. Les autres fichiers seront ignorés et supprimés sans avertissement.
  2. Le script (mis à jour) ne fonctionne que trois niveaux en dessous du dossier parent. S'il y a des sous-dossiers dans les sous-dossiers contenant des fichiers ".avi", ils seront supprimés comme tout autre fichier (y compris ces fichiers ".avi").
  3. Ce script peut gérer les fichiers ".avi" qui ont des espaces dans le nom de fichier.

Attention : Ceci utilise un shell script qui déplace les fichiers et supprime complètement les répertoires/fichiers. Faites une sauvegarde avant de tenter de l'utiliser (même des changements mineurs dans le script peuvent causer des problèmes sérieux et irrécupérables). Il n'y a aucun moyen de se remettre d'un problème, à l'exception de la restauration à partir d'une sauvegarde.

Solution :

  • Dans Hazel, configurez une veille pour le dossier parent dans le volet Dossiers à gauche.

  • Ajoutez une règle en cliquant sur le bouton "+" et nommez-la comme vous le souhaitez.

  • Définissez les critères de conditions comme suit

    If <any> of the following conditions are met for <any of its sub-files or folders>
    
    <Any File>
  • Définissez le Effectuez les opérations suivantes sur le fichier ou le dossier correspondant : comme suit

    <Run shell script> <embedded script>
  • Cliquez sur le Modifier le script à côté de la liste déroulante.

  • Laissez le La coquille : à l'option par défaut ( '/bin/sh ).

  • Dans la zone de texte ci-dessous, copiez et collez ce shell script (j'ai inclus des commentaires commençant par # - ils sont juste pour faciliter la compréhension ou la modification)

    # Get the directory name and go into it - this should be the parent directory
    dir=`dirname $1`
    cd $dir
    
    # Find all directories one level below
    # For each subdirectory, move all ".avi" files to its parent directory,
    # then remove the subdirectory and its contents (change avi to any other extension if necessary)
    find . ! -path . -type d -maxdepth 1 -exec sh -c '
    dir="$0"
    mv $dir/*/*/*.avi $dir/..
    rm -rf $dir
    ' {} ';'

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