GNU/Linux >> Linux Esercitazione >  >> Linux

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

Al momento sto cercando di rinominare un ampio set di file e ho utilizzato metodi piuttosto ingannevoli per farlo, come ad esempio:

rename 's:(.*).MOV:$1.mov:g' *.MOV
rename 's:(.*).JPG:$1.jpg:g' *.JPG

Quello che mi piacerebbe davvero fare è poter combinare tutti questi comandi usando la 'y' sed operatore. Evidentemente, utilizzando questo operatore, puoi trasformare gli elementi in minuscolo. Il problema è che devo convertire solo le estensioni. C'è un modo per farlo usando questo comando? Devo essenzialmente trasformare il gruppo di acquisizione nella seguente espressione in minuscolo:^.+.(.+)$ . C'è un modo per fare questo? Sono un po' nuovo a questo tipo di trasformazioni.

Risposta accettata:

Questo è il rename basato su Perl trovato su Debian, Ubuntu e derivati, a giudicare dalla sintassi. Non puoi usare il tr operatore perché agisce sull'intera stringa. Ma puoi abbinare l'estensione e minuscola con L .

rename 's/.[^.]*$/L$&/' *.JPG *.MOV

Qui non è necessario, ma se l'espressione regolare corrisponde più della parte che vuoi ridurre in minuscolo, puoi mettere la parte da abbinare in un gruppo:

rename 's/.([^.]*)$/.L$1/' *.JPG *.MOV

Sostituisci *.JPG *.MOV per *.* per agire su tutti i file indipendentemente dall'estensione. In bash ≥4.3 (e anche in bash 4.0–4.2, con l'avvertenza che questo attraversa anche collegamenti simbolici alle directory), puoi facilmente agire sui file nelle sottodirectory e così via in modo ricorsivo:

rename 's/.[^.]*$/L$&/' **/*.*

Per i fan di zsh (il :r e :e i modificatori isolano l'estensione dal resto del file):

autoload zmv
zmv '*.(MOV|JPG)' '${f:r}.${(L)f:e}'      # these extensions, current directory
zmv '*.*' '${f:r}.${(L)f:e}'              # all extensions, current directory
zmv '**/*.*' '${f:r}.${(L)f:e}'           # all extensions, recursive directory traversal

Linux
  1. Centos:rinominare tutti i file con un certo nome?

  2. File di gatto con directory?

  3. Rinominare i file nella directory?

  4. Come rinominare l'insieme di file con pattern?

  5. Metamorphose 2 – Rinomina in batch i tuoi file e cartelle su Linux

Come rinominare uno o più file in Linux

Eseguire il backup dei file con rsync

Rinominare file e cartelle in cPanel

Linux:rimuovi le estensioni di file per più file

Come posso rinominare i file con spazi utilizzando la shell di Linux?

Come rinominare tutti i file con caratteri speciali e spazi in una directory?