使用大括号扩展来更改文件名,而不是扩展名?

使用大括号扩展来更改文件名,而不是扩展名?

我有一个目录,其中包含一堆具有不同扩展名的文件,但扩展名之前的文件名都是相同的。例如,file1.txt、file1.jpg、file1.pdf、file1.odt...

我想更改“file1”部分,但不更改扩展名,因此结果将是,例如 newfilename.txt、newfilename.jpg、newfilename.pdf、newfilename.odt

我不知道如何在不乏味地运行mv file1.txt newfilename.txt每一个的情况下做到这一点。如果您知道要扩展的所有部分,我可以在网上找到很多使用大括号扩展来更改文件名的教程,但是无论扩展名是什么,都无法将 file1 替换为 newfilename 。这是可能的吗,还是我找错了树?

谢谢

编辑:我很抱歉,在发布此内容后不久,我在我的 Google 结果中发现了另一个页面,它为我回答了这个问题:for f in file1.*; do mv "$f" "${f/file1/newfilename}"; done完美地工作。

答案1

我在发布问题后发现了这一点:

for f in file1.*; do mv "$f" "${f/file1/newfilename}"; done

奇迹般有效。

答案2

您可以使用 bash 来做到这一点,但还有其他更适合这项工作的工具。

在大多数发行版上:

rename file1 newfilename file1.*

在 Debian 和 Ubuntu 上,替换renamerename.ul.

相关内容