Come spostare alcuni file nella loro directory principale?


13

Voglio estrarre tutti gli mp3 che accidentalmente sono stati inseriti in una cartella flac, nella loro cartella principale.

Non dovrebbe importare quanto siano profonde le cartelle, voglio solo spostare i file corrispondenti esattamente di una directory in alto.

Ecco come seleziono i miei file:

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

Funziona dalla mia cartella musicale, ma sono bloccato qui. Tutte le soluzioni che ho trovato, spostano i file nella cartella principale della cartella corrente o richiedono una struttura fissa.

Risposte:


24

Provare:

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

Come funziona

  1. find .

    Avvia un comando find che lavora sulla directory corrente.

  2. -path "*/flac/*"

    Seleziona solo i file con flacnel loro percorso

  3. -name '*.mp3'

    Seleziona solo i file con estensione .mp3.

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

    Per qualsiasi file trovato, eseguire il mvcomando dalla directory in cui si trova il file e spostare il file nella directory principale.

    Oltre a semplificare questo particolare compito, l'opzione -execdirè anche più sicura rispetto -execall'opzione tradizionale .

Semplificazione

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

1
Bello! Fa esattamente quello che voglio.
Marcel,

Il + è un'alternativa al rituale \; ?
Rackandboneman,

@ Johnn1024 supponendo che non ci siano directory nidificate con lo stesso flacnel percorso, */flac/flac/x.mp3altrimenti il x.mp3file salirà di due livelli.
αғsнιη,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.