首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用wget对下载的文件进行部分重命名?

如何使用wget对下载的文件进行部分重命名?
EN

Stack Overflow用户
提问于 2018-01-18 04:07:46
回答 2查看 359关注 0票数 3

我想从ftp-server下载很多文件(大约10000个)。文件名太长。我只想用名称中的日期来保存它们。例如:ABCDE201604120000-abcde.nc我更喜欢做20160412.nc,可以吗?

EN

回答 2

Stack Overflow用户

发布于 2018-01-20 18:53:24

我不确定wget是否提供了类似的功能,尽管如此,对于curl,人们可以从它提供的相对丰富的syntax中获益,以便指定感兴趣的URL。例如:

代码语言:javascript
复制
curl \
    "https://ftp5.gwdg.de/pub/misc/openstreetmap/SOTMEU2014/[53-54].{mp3,mp4}" \
    -o "file_#1.#2"

将下载文件53.mp3, 53.mp4, 54.mp3, 54.mp4。输出文件被指定为file_#1.#2 -在这里,#1curl替换为与正在下载的文件对应的序列[53-54]的值。类似地,用mp3mp4替换#2。因此,例如,53.mp3将被保存为file_53.mp3

票数 0
EN

Stack Overflow用户

发布于 2018-02-20 00:17:32

如果您可以按照帖子中所示枚举文件名,则ewcz's answer工作得很好。但是,如果文件名很难枚举,例如,因为整数是稀疏填充的,这种解决方案将导致大量的404 Not Found请求。

如果是这样,那么递归下载所有文件可能更好,如您所示,然后重命名它们。如果文件名遵循固定模式,则可以从原始名称中选择子字符串并将其用作新名称。在给定的示例中,新文件名从位置5开始,长度为8个字符。下面的bash命令重命名当前目录中的所有*.nc文件。

代码语言:javascript
复制
for f in *.nc; do mv "$f" "${f:5:8}.nc" ; done

如果文件名不遵循固定模式,并且长度可能不同,您可以使用sed使用更复杂的模式替换,请参见SO post的示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48309193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档