我想将一组文件重命名为相同的文件名但没有扩展名。它们分散在我的主目录中,我不知道它们的确切位置,但我知道要删除的扩展名。
我需要一个且只有一个命令来执行此任务。
这是部分命令:
$ find ~/ -type f -name "*.hhs" -exec mv {} <I DO NOT KNOW> \;
在哪里<I DO NOT KNOW>
被你的建议取代。例如,我尝试将其替换为以下内容:
`basename {} .hhs`
它对我不起作用。
例子
如果找到文件file1.jpg.hhs
和file2.jpg.hhs
,我希望将它们重命名如下:file1.jpg
和file2.jpg
如果您拥有或可以安装 PERL 扩展,
rename
(apt-get install rename
在基于 Debian 的发行版上)...选项,
-d
或--delete
删除指定的字符串。您需要一个可以
.hhs
从文件名中删除文件名后缀的工具。find
不能为您执行此操作,因此您必须通过以下方式调用另一个实用程序-exec
:我没有
basename
在这里使用,因为这也会从找到的路径名中删除目录路径(可以使用 再次插入dirname
,但会产生混乱的代码)。相反,我使用尽可能多的找到的路径名调用内联 shell 脚本,并让脚本循环遍历这些路径名,复制各个文件。新名称是使用标准参数替换构造的,该替换
.hhs
从 的值末尾删除字符串$pathname
。有关的: