重命名多个文件的扩展名

重命名多个文件的扩展名

我想重命名扩展,.tar?h=ocdist105&=%2Fdata1%2F4070d0f0f1d62757%2Frequested_files因为.tar 我尝试了该命令

rename 's/\.tar?h=ocdist105&p=%2Fdata1%2F4070d0f0f1d62757%2Frequested_files$/.tar/' *.tar?h=ocdist105&p=%2Fdata1%2F4070d0f0f1d62757%2Frequested_files

但似乎不起作用。我有 550 个带有该扩展名的文件。有人能帮我吗?谢谢

答案1

您可能能够使用 find、exec 和 rename 来实现这一点。我确信它可以在 Ubuntu 上运行,而不需要任何特殊操作。

#!/bin/bash

find /path/to/files -name "*.tar?h=ocdist105&=%2Fdata1%2F4070d0f0f1d62757%2Frequested_files" -exec rename .tar?h=ocdist105&=%2Fdata1%2F4070d0f0f1d62757%2Frequested_files .tar {} \;

.css这尚未经过测试,但应该可行。为了清楚起见,以下是尝试将扩展名重命名为.txt例如时命令的样子。

#!/bin/bash

find /path/to/files -name "*.css" -exec rename .css .txt {} \;

使用

将以上内容放入一个文件中。赋予该文件可执行权限,然后运行它。

测试

您可以测试上述命令以查看结果,而无需通过-n在后面添加来进行实际更改rename

#!/bin/bash

find /path/to/files -name "*.css" -exec rename -n .css .txt {} \;

答案2

cd到你的文件夹并运行mmv '*.tar*' '#1.tar'

如果你没有安装 mmv,请运行sudo apt-get install mmv

答案3

和你的 shell都rename将某些字符视为特殊字符。你应该正确地转义它们。

此命令应该完成以下工作:

rename 's/\.tar\?h\=ocdist105\&\=%2Fdata1%2F4070d0f0f1d62757%2Frequested_files$/.tar/' *.tar\?h\=ocdist105\&\=%2Fdata1%2F4070d0f0f1d62757%2Frequested_files

如果您想知道我是如何生成该命令的,只需知道,在处理此类问题时,制表符补全功能非常有用。

相关内容