GNU/Linux >> Linux Esercitazione >  >> Linux

Come ripulire le estensioni dei file?

Ho una directory con file .MP3 di cui vorrei cambiare le estensioni in .mp3. Qual è il modo più semplice per farlo? Penso qualcosa sulla falsariga di:

find /RootPath -type f -iname "*.mp3" -exec mv {} sed s/.*MP3/1.mp3/ ; 

... anche se so che non è del tutto corretto. 🙂 La sostituzione non è corretta e non sono sicuro di come utilizzare sia un mv e un sed comando con -exec in find .

Avrei bisogno di uno script bash per questo?

Risposta accettata:

Ecco un modo per farlo in Bash:

for i in *; do [ "${i/%MP3/mp3}" != "$i" ] && echo "$i" "${i/%MP3/mp3}"; done

Ho usato echo qui quindi il comando stesso non fa altro che stampare coppie di nomi di file. Se quell'elenco rappresenta le modifiche che desideri apportare, puoi modificare echo a qualcosa come mv -i -- che quindi sposterà i tuoi file (e ti chiederà prima di sovrascrivere).

Breve spiegazione:

Il for scorre ogni file corrispondente a * . Quindi, determiniamo se l'estensione è già minuscola, se lo è andiamo avanti, se non lo è, procediamo a spostarla (o farla eco, a seconda dei casi). Questo utilizza le operazioni sulle stringhe integrate di Bash di cui puoi leggere qui:http://tldp.org/LDP/abs/html/string-manipulation.html


Linux
  1. Come rinominare un file in Linux?

  2. Come rendere il file sparse?

  3. Come si aggiunge del testo a un file?

  4. Come grep \n nel file

  5. Come copiare un file in modo transazionale?

Come creare file Tar Gz

Come decomprimere (aprire) il file Gz

Come eseguire il tar di tipi di file specifici (estensioni) in una directory

Come collegare simbolicamente un file in Linux

Come fare eco in un file

Come ripulire i file non necessari