У мене є ряд файлів tiff з назвою:
sw.001.tif
sw.002.tif
...
і я хочу видалити .tif
кінець кожного з файлів. Як я можу використовувати rename
команду для цього?
У мене є ряд файлів tiff з назвою:
sw.001.tif
sw.002.tif
...
і я хочу видалити .tif
кінець кожного з файлів. Як я можу використовувати rename
команду для цього?
Відповіді:
perl
's rename
(як зазвичай зустрічається на Debian, де його також називають prename
), або це похідне ( rename
пакет для Debian):
rename 's/\.tif$//' *.tif
util-linux
rename
(як це зазвичай зустрічається в Red Hat, rename.ul
на Debian):
rename -- .tif '' *.tif
(Зверніть увагу , що це можна було б перейменувати blah.tiffany.tif
в blahfany.tif
)
Для неперейменування ви можете:
$ for i in *.tif; do mv -i $i `basename $i .tif`; done
(-і застерегти від заміни файлу)
for i in ./*.tif; do mv -i "$i" "${i%.tif}"; done
rename -- .oldext .newext *.oldext
Це замінює старе розширення новим. Щоб просто видалити розширення, ви можете явно передати порожній рядок як аргумент.
rename -- .gz.tmp '' *.gz.tmp
За допомогою наведеної вище команди всі файли з .gz.tmp
розширенням у поточній папці будуть перейменовані в filename.gz
.
Докладні відомості див. У статті: Linux: видаліть розширення файлів для кількох файлів .
rename
, несумісна з (і набагато більш обмеженою, ніж) традиційною rename
командою perl
.
.oldext
в імені файлу, а не обов'язково розширення ( foo.oldextasy.oldext
було б перейменовано на footasy.oldext
).
чи можемо ми зробити це рекурсивним
for i in *.gz; do mv -i $i `basename $i .gz`; done