如何通过删除扩展名来重命名多个文件?

Pau*_*aul 22 rename

我有许多名为的 tiff 文件:

sw.001.tif
sw.002.tif
...
Run Code Online (Sandbox Code Playgroud)

我想删除.tif每个文件末尾的 。我怎样才能使用rename命令来做到这一点?

Ign*_*ams 31

perl's rename(通常在 Debian 上发现,它也被称为prename),或者这个派生类renameDebian 上的包):

rename 's/\.tif$//' *.tif
Run Code Online (Sandbox Code Playgroud)

util-linux rename(通常可以在 Red Hat 和rename.ulDebian 上找到):

rename -- .tif '' *.tif
Run Code Online (Sandbox Code Playgroud)

(请注意,一个将重命名blah.tiffany.tifblahfany.tif

  • 我相信“Debian”重命名是由 Larry Wall(与 Perl 一起提供?)和“Red Hat”重命名来自 util-linux(Debian IIRC 中的 rename.ul)。 (2认同)

XTL*_*XTL 13

对于非重命名,您可以执行以下操作:

$ for i in *.tif; do mv -i $i `basename $i .tif`; done
Run Code Online (Sandbox Code Playgroud)

(-i 警告不要替换文件)

  • 更安全更快的版本:`for i in ./*.tif; do mv -i "$i" "${i%.tif}"; 完成` (20认同)
  • @PedroA `./` 是一个非常安全的前缀,可以防止文件名被误解,例如以 `-` 开头的文件可能会被解释为选项。[示例](https://unix.stackexchange.com/q/1519/9537) (2认同)