通过删除linux中的url参数重命名文件

时间:2013-01-02 21:35:02

标签: linux file shell file-rename batch-rename

我使用下载了一些文件,文件格式如下:

test.zip?AWSAccesskeyId=XXXXXXX&Expires=00000000&Signature=ZZZZZZZZZZ

有没有办法,通过删除URL参数来正确地重命名这些文件。也有任何方法,从wget下载具有正确名称(没有URL参数)的此类文件。

我使用以下命令尝试使用mmv

mmv "*.zip*" "#1.zip"

但我找不到安装mmv的方法。我正在使用CentOS 6.所以,请以任何方式提出建议,除此之外。

3 个答案:

答案 0 :(得分:17)

for file in *.zip\?*; do mv "$file" "${file%%\?*}"; done

据我所知,wget没有选项告诉它不要在本地文件名中包含查询字符串。您可以使用-O选项指定显式文件名,并修复驱动程序脚本以删除查询字符串本身。

答案 1 :(得分:1)

for i in `ls *.zip?*`; do echo $i | cut -f 1 -d \? | xargs -n1 mv $i ; done

很抱歉懒得立刻检查名字中的空格。而且无法测试。我此时无法访问基于bash的系统。

答案 2 :(得分:0)

如果您有g++ >=4.9.2,则可以安装rnm并执行:

rnm -ns '/n/.zip' *.zip\?*
# /n/ expands to file name without extension.

或者

rnm -rs '/\.zip\?.*/.zip/' *.zip\?*