我有一个目录,其中包含一堆具有不同扩展名的文件,但扩展名之前的文件名都是相同的。例如,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 上,替换rename
为rename.ul
.