使用 curl 遍历一长串文件,并将每个文件写入具有匹配文件名的唯一新文件
Glob through a long list of files with curl and writing each to a unique, new file with a matching filename
我正在使用 curl
从 ftp 站点下载几组大型文件,并将它们写入具有相同名称的新文件。我想使用这样的命令:
curl ftp/site/filename > filename
以下是来自 ftp 站点的一些示例文件:
File:Compara.6_primates_EPO.chr10_1.emf.gz 30909 KB 8/3/10 12:00:00 AM
File:Compara.6_primates_EPO.chr10_2.emf.gz 13110 KB 8/3/10 12:00:00 AM
File:Compara.6_primates_EPO.chr10_3.emf.gz 24948 KB 8/3/10 12:00:00 AM
File:Compara.6_primates_EPO.chr10_4.emf.gz 45155 KB 8/3/10 12:00:00 AM
File:Compara.6_primates_EPO.chr10_5.emf.gz 17236 KB 8/3/10 12:00:00 AM
File:Compara.6_primates_EPO.chr11_1.emf.gz 37593 KB 8/3/10 12:00:00 AM
...
500 files later
....
File:Compara.6_primates_EPO.other_9.emf.gz 8980 KB 8/3/10 12:00:00 AM
有很多这样的文件,我将浏览其中的许多长列表。我可以使用 一些 数字模式
for x in {1..N}; do curl ftp/site/file${x} > file${x}
但也有不可预测的模式,例如二级数字索引因不同文件而异。这里是{1..5}
:
Compara.6_primates_EPO.chr10_{1..5}
对于下一个文件,我可能会有类似
的内容
Compara.6_primates_EPO.chr11_{1..7}
然后有一些古怪的东西,比如最后一个:
Compara.6_primates_EPO.other_{1..?}
我知道我不能像这样使用简单的通配:
curl ftp/site/file* > file*
-- 这只是给了我 ambiguous redirect
。我想知道是否有人知道一个聪明的解决方案,我可以将文件名 glob,将其保存为字符串,然后将输出写入文件名,而不会 too 花哨...我知道我可能会去编写一个 python 脚本来更系统地执行此操作,但似乎有一个我没有想到的快速 bash
解决方案...
毕竟这个问题的答案很简单:
curl -O ftp/path/to/site/*glob_pattern*
-O
选项将以与目录中给定的名称相同的名称保存文件:-)
我正在使用 curl
从 ftp 站点下载几组大型文件,并将它们写入具有相同名称的新文件。我想使用这样的命令:
curl ftp/site/filename > filename
以下是来自 ftp 站点的一些示例文件:
File:Compara.6_primates_EPO.chr10_1.emf.gz 30909 KB 8/3/10 12:00:00 AM
File:Compara.6_primates_EPO.chr10_2.emf.gz 13110 KB 8/3/10 12:00:00 AM
File:Compara.6_primates_EPO.chr10_3.emf.gz 24948 KB 8/3/10 12:00:00 AM
File:Compara.6_primates_EPO.chr10_4.emf.gz 45155 KB 8/3/10 12:00:00 AM
File:Compara.6_primates_EPO.chr10_5.emf.gz 17236 KB 8/3/10 12:00:00 AM
File:Compara.6_primates_EPO.chr11_1.emf.gz 37593 KB 8/3/10 12:00:00 AM
...
500 files later
....
File:Compara.6_primates_EPO.other_9.emf.gz 8980 KB 8/3/10 12:00:00 AM
有很多这样的文件,我将浏览其中的许多长列表。我可以使用 一些 数字模式
for x in {1..N}; do curl ftp/site/file${x} > file${x}
但也有不可预测的模式,例如二级数字索引因不同文件而异。这里是{1..5}
:
Compara.6_primates_EPO.chr10_{1..5}
对于下一个文件,我可能会有类似
的内容Compara.6_primates_EPO.chr11_{1..7}
然后有一些古怪的东西,比如最后一个:
Compara.6_primates_EPO.other_{1..?}
我知道我不能像这样使用简单的通配:
curl ftp/site/file* > file*
-- 这只是给了我 ambiguous redirect
。我想知道是否有人知道一个聪明的解决方案,我可以将文件名 glob,将其保存为字符串,然后将输出写入文件名,而不会 too 花哨...我知道我可能会去编写一个 python 脚本来更系统地执行此操作,但似乎有一个我没有想到的快速 bash
解决方案...
毕竟这个问题的答案很简单:
curl -O ftp/path/to/site/*glob_pattern*
-O
选项将以与目录中给定的名称相同的名称保存文件:-)