GNU/Linux >> Linux Esercitazione >  >> Linux

Rinominare i file in Linux con una regex

Soluzione 1:

Ero solito scrivere script perl per fare questo, finché non ho scoperto il comando rename.

Accetta una regex perl per eseguire la ridenominazione:

per questo, ho appena digitato due comandi:

rename 's/(\w+)-(\w+)-(\d\d)-(\d{4})-NODATA.txt\$1.$4$3$2.log$//' *
rename 'y/A-Z/a-z/' *.log

Per alcune distro però, rename non ha questa funzionalità (vedi la sua pagina man) e potresti dover installare perl-rename o prename .

Soluzione 2:

mmv è un'utilità Linux standard per spostare/rinominare più file. È disponibile dai repository per la maggior parte delle distribuzioni. Per il tuo esempio sopra, potresti fare:

mmv '*-Log-*-*-*-NODATA.txt' '#l1.#4#3#2.log'

Per ulteriori informazioni, leggi questo articolo debaday o la pagina man.

Soluzione 3:

Dal momento che non ho un comando di rinomina, mi affido a questo:

for myfile in /my/folder/*; do
    target=$(echo $myfile|sed -e 's/foo/bar/g')
    mv "$myfile" "$target"
done

Soluzione 4:

rename util non è molto "standard". Ogni distribuzione viene fornita con un rename diverso attrezzo. Ad esempio, qui su Gentoo, rename proviene da sys-apps/util-linux package e non supporta regex.

Hamish Downer suggerito mmv , sembra utile, specialmente per l'uso all'interno di script.

D'altra parte, per il caso generale, potresti voler renameutils. Ha qmv e qcp comandi, che apriranno un editor di testo a tua scelta (la mia preferenza:Vim) e ti permetteranno di modificare lì i nomi dei file di destinazione. Dopo aver salvato e chiuso l'editor, qmv /qcp eseguirà tutte le operazioni di ridenominazione.

Entrambi mmv e qmv sono abbastanza intelligenti da rinominare i file nell'ordine corretto e anche da rilevare rinominazioni circolari e creeranno automaticamente un file temporaneo se necessario.


Linux
  1. Come crittografare i file con gocryptfs su Linux

  2. Rinominare i file per avere estensioni minuscole con "rinominare"?

  3. Lavora con i file ZIP in Linux

  4. Linux rinomina i file in maiuscolo

  5. Esiste un comando linux come mv ma con regex?

Esercitazione sui comandi zforce di Linux con esempi

Come rinominare i file usando la riga di comando in Linux

Come rinominare uno o più file in Linux

Linux Rinomina estensione file multipli

lsof Command in Linux con esempi

Comando di comunicazione Linux con esempi