Как переименовать несколько файлов, удалив расширение?

Как переименовать несколько файлов, удалив расширение?

У меня есть несколько tiff-файлов с именами:

sw.001.tif
sw.002.tif
...

и я хочу удалить .tifв конце каждого из файлов. Как я могу использовать renameкоманду, чтобы сделать это?

решение1

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)

решение2

Чтобы не переименовывать, можно сделать следующее:

$ for i in *.tif; do mv -i $i `basename $i .tif`; done

(-i для предупреждения о замене файла)

решение3

rename -- .oldext .newext *.oldext

Это заменит старое расширение на новое. Чтобы просто удалить расширение, вы можете явно передать пустую строку в качестве аргумента.

rename -- .gz.tmp  '' *.gz.tmp

С помощью указанной выше команды все файлы с .gz.tmpрасширением в текущей папке будут переименованы в filename.gz.

См. статью:Linux: удалить расширения файлов для нескольких файловдля получения подробной информации.

решение4

perl-rename 's/\.tif//' *.tif

Использовать -nдля холостого хода.

Связанный контент