Comment déplacer certains fichiers vers leur répertoire parent?

13

Je veux en extraire tous les mp3 accidentellement placés dans un dossier flac, vers leur dossier parent.

Peu importe la profondeur des dossiers, je veux juste déplacer les fichiers correspondants exactement d'un répertoire vers le haut.

Voici comment je sélectionne mes fichiers:

find . -path "*/flac/*" -name '*.mp3'

Cela fonctionne à partir de mon dossier de musique, mais je suis coincé ici. Toutes les solutions que j'ai trouvées, soit déplacer les fichiers vers le parent du dossier actuel, ou nécessitent une structure fixe.

Marcel
la source

Réponses:

24

Essayer:

find . -path "*/flac/*" -name '*.mp3' -execdir mv -t ../ {} +

Comment ça fonctionne

  1. find .

    Démarrez une commande find en travaillant sur le répertoire courant.

  2. -path "*/flac/*"

    Sélectionnez uniquement les fichiers avec flacdans leur chemin

  3. -name '*.mp3'

    Sélectionnez uniquement les fichiers avec extension .mp3.

  4. -execdir mv -t ../ {} +

    Pour tous les fichiers trouvés, exécutez la mvcommande à partir du répertoire dans lequel se trouve le fichier et déplacez le fichier vers le répertoire parent.

    En plus de faciliter cette tâche particulière, l'option -execdirest également plus sûre que l' -execoption traditionnelle .

Simplification

find . -path "*/flac/*.mp3" -execdir mv -t ../ {} +
John1024
la source
1
Agréable! Fait exactement ce que je veux.
Marcel
Le + est-il une alternative au rituel \; ?
rackandboneman
@ Johnn1024 en supposant qu'il n'y a pas de répertoires imbriqués avec le même flacchemin d'accès, */flac/flac/x.mp3sinon le x.mp3fichier remontera de deux niveaux.
αғsнιη