2015-07-14 2 views
0

Я загружаю несколько больших наборов файлов с ftp-сайта, используя curl и записывая их в новые файлы с тем же именем. Я хочу использовать такую ​​команду:Glob через длинный список файлов с curl и записывая каждый в уникальный, новый файл с соответствующим именем файла

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. Мне было интересно, знает ли кто-нибудь о умном решении, где я мог бы замаскировать имя файла, сохранить его как строку, а затем записать вывод в имя файла, не получив тоже fancy ... Я знаю, что я мог бы пойти и написать python скрипт, чтобы сделать это более систематично, но кажется, что там может быть быстро bash решение, которое я не в состоянии думать о ...

+0

Вы посмотрели [страницу для завитки] (http://curl.haxx.se/docs/manpage.html)? Примеры для [URL] (http://curl.haxx.se/docs/manpage.html#URL), по-видимому, указывают на то, что вам не нужно ничего, кроме диапазонов в URL-адресах ftp. –

+0

@EtanReisner Привет, Etan, спасибо. Мое лицо немного красное сейчас, я должен был заглянуть в локоны, раньше ;-) 'curl -O ftp/*' отлично работает ... – isosceleswheel

ответ

0

ответ на этот вопрос был прост в конце концов:

curl -O ftp/path/to/site/*glob_pattern*

Опция -O сохранит файлы с тем же именем, что и в каталоге :-)