在Linux中通过删除URL参数重命名文件

9
我用下载了一些文件,这些文件的格式如下:
test.zip?AWSAccesskeyId=XXXXXXX&Expires=00000000&Signature=ZZZZZZZZZZ

有没有办法通过删除URL参数来适当地重命名这些文件?此外,有没有办法从wget下载这样的文件,并使用适当的名称(不带URL参数)。
我尝试使用以下命令使用mmv:
mmv "*.zip*" "#1.zip"

但我找不到任何安装mmv的方法。我正在使用CentOS 6。因此,请建议其他方法。

3个回答

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

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

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

抱歉,现在懒得检查名称中的空格。而且无法测试。此时此刻我没有访问基于Bash的系统的权限。


0

如果你有 g++ >=4.9.2,那么你可以安装rnm 并执行以下命令:

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

或者

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接