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

Posted

技术标签:

【中文标题】通过在linux中删除url参数重命名文件【英文标题】:Rename file by removing url parameter in linux 【发布时间】:2012-12-17 06:18:23 【问题描述】:

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

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

有什么方法可以通过删除 URL 参数来正确重命名这些文件。还有什么方法可以从wget下载具有正确名称(不带URL参数)的此类文件。

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

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

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

【问题讨论】:

【参考方案1】:
for i in `ls *.zip?*`; do echo $i | cut -f 1 -d \? | xargs -n1 mv $i ; done

抱歉,现在懒得检查名称中的空格。并且无法测试。我目前无法访问基于 bash 的系统。

【讨论】:

【参考方案2】:
for file in *.zip\?*; do mv "$file" "$file%%\?*"; done

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

【讨论】:

【参考方案3】:

如果您有g++ >=4.9.2,那么您可以安装rnm 并执行以下操作:

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

或者

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

【讨论】:

以上是关于通过在linux中删除url参数重命名文件的主要内容,如果未能解决你的问题,请参考以下文章

Linux下文件重命名创建删除修改及保存文件

Linux下对文件夹和文件重命名、移动和删除

如何使用C语言进行文件的重命名及删除操作?

怎么给一个文件重命名 linux

apt无法重命名文件

linux wget指定下载目录和重命名