Ho un numero di file tiff chiamati:
sw.001.tif
sw.002.tif
...
e voglio rimuovere il .tif
alla fine di ciascuno dei file. Come posso usare il rename
comando per fare questo?
Ho un numero di file tiff chiamati:
sw.001.tif
sw.002.tif
...
e voglio rimuovere il .tif
alla fine di ciascuno dei file. Come posso usare il rename
comando per fare questo?
Risposte:
perl
's rename
(come in genere si trova su Debian dove viene anche chiamato prename
), o questa derivata ( rename
pacchetto su Debian):
rename 's/\.tif$//' *.tif
util-linux
rename
(come generalmente si trova su Red Hat, rename.ul
su Debian):
rename -- .tif '' *.tif
(nota che quello sarebbe rinomina blah.tiffany.tif
a blahfany.tif
)
Per un non rinominare, potresti fare:
$ for i in *.tif; do mv -i $i `basename $i .tif`; done
(-i per mettere in guardia contro la sostituzione di un file)
for i in ./*.tif; do mv -i "$i" "${i%.tif}"; done
rename -- .oldext .newext *.oldext
Questo sostituisce la vecchia estensione con quella nuova. Per rimuovere semplicemente l'estensione è possibile passare esplicitamente una stringa vuota come argomento.
rename -- .gz.tmp '' *.gz.tmp
Con il comando precedente tutti i file con .gz.tmp
estensione nella cartella corrente verranno rinominati filename.gz
.
Fare riferimento all'articolo: Linux: rimuovere le estensioni di file per più file per i dettagli.
rename
sia incompatibile con (e molto più limitata di) il rename
comando tradizionale da perl
.
.oldext
all'interno del nome del file, non necessariamente l'estensione ( foo.oldextasy.oldext
verrebbe rinominata in footasy.oldext
).
possiamo renderlo ricorsivo
for i in *.gz; do mv -i $i `basename $i .gz`; done