web-dev-qa-db-fra.com

Comment déplacer des fichiers dans leur répertoire parent?

Je veux extraire tous les mp3 qui ont été accidentellement placés dans un dossier flac, dans leur dossier parent.

La profondeur des dossiers ne devrait pas avoir d'importance, 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, déplacent les fichiers vers le parent du dossier actuel ou nécessitent une structure fixe.

13
Marcel

Essayer:

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

Comment ça marche

  1. find .

    Lancer une commande de recherche travaillant sur le répertoire en cours.

  2. -path "*/flac/*"

    Sélectionnez uniquement les fichiers avec flac dans leur chemin

  3. -name '*.mp3'

    Sélectionnez uniquement les fichiers avec l'extension .mp3.

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

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

    En plus de faciliter cette tâche particulière, l'option -execdir est également plus sécurisée que l'option -exec traditionnelle.

Simplification

find . -path "*/flac/*.mp3" -execdir mv -t ../ {} +
24
John1024