I have a number of tiff files named:
sw.001.tif
sw.002.tif
...
and I want to remove the .tif
at the end of each of the files. How can I use the rename
command to do this?
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It only takes a minute to sign up.
Sign up to join this communityI have a number of tiff files named:
sw.001.tif
sw.002.tif
...
and I want to remove the .tif
at the end of each of the files. How can I use the rename
command to do this?
perl
's rename
(as typically found on Debian where it's also called prename
), or this derivative (rename
package on Debian):
rename 's/\.tif$//' *.tif
util-linux
rename
(as typically found on Red Hat, rename.ul
on Debian):
rename -- .tif '' *.tif
(note that that one would rename blah.tiffany.tif
to blahfany.tif
)
For a non-rename, you might do:
$ for i in *.tif; do mv -i $i `basename $i .tif`; done
(-i to warn against replacing a file)
rename -- .oldext .newext *.oldext
This substitutes the old extension with the new one. To simply remove the extension you can explicitly pass in an empty string as an argument.
rename -- .gz.tmp '' *.gz.tmp
With the above command all files with .gz.tmp
extension in the current folder will be renamed to filename.gz
.
Refer to the article : Linux: remove file extensions for multiple files for details.
rename
which is incompatible with (and much more limited than) the traditional rename
command from perl
.
May 27, 2015 at 9:49
.oldext
within the file name, not necessarily the extension (foo.oldextasy.oldext
would be renamed to footasy.oldext
).
May 27, 2015 at 9:50
If you use IBM AIX you won't have a rename
command, so in order to batch remove file extensions you'll have to use plain vanilla System V UNIX commands:
for file in *.tif; do
mv $file `echo $file | sed 's/.tif$//'`;
done;
perl-rename 's/\.tif//' *.tif
Use -n
for dry run.