Я думаю, что Вы хотите
file-name-version-[0-9].[0-9].[0-9].jar
Вы можете сделать очень простой Shell Poot, чтобы сделать это:
while read filename
do
echo '#!/bin/bash' > $filename.sh
echo "wget ftp://host.com/dir1/dir2/$filename/$filename.sra" >> $filename.sh
done < filenames.txt
Это читает каждую строку из filenames.txt
и вызывает его И имеющееся значение
, то для каждого из них выписан файл с именем $ filename.sh
, где $ filename
заменяется линией из файла. Этот файл имеет две строки: #! / Bin / bash
, в каждом файле, а затем команду wget
, которую вы хотели, снова с именем файла, замещенного в. >>
представляют собой вторую строку в один и тот же файл, а не перезаписи. После запуска этого скрипта:
$ cat file1.sh
#!/bin/bash
wget ftp://host.com/dir1/dir2/file1/file1.sra
$ cat file2.sh
#!/bin/bash
wget ftp://host.com/dir1/dir2/file2/file2.sra
Вы можете добавить третью строку внутри корпуса цикла:
chmod a+x "$filename.sh"
, чтобы сценарии были исполняемыми после этого. Поместите это сразу выше на вышеуказанную строку
.
Если в любом из ваших файлов имена имеют пробелы или другие специальные символы в них, то это распадет (на нескольких уровнях), но для буквенно-цифровых имен будет в порядке.
Используйте эту команду:
awk -v url='ftp://host.com/dir1/dir2' '{printf "#!/bin/bash\nwget %s/%s/%s.sra\n",url,$1,$1 >$1".sh"}' filenames.txt
После того, как эта команда запускается, будет серия файлов в текущем каталоге, такое как:
$ ls *.sh
file1.sh file2.sh file3.sh
Содержание каждого выглядит что-то вроде:
$ cat file1.sh
#!/bin/bash
wget ftp://host.com/dir1/dir2/file1/file1.sra
-V URL = 'ftp: //host.com/dir1/dir2'
Это определяет URL
как awk
.
printf "#! / Bin / bash \ nwget% s /% s /% s.sra \ n", URL, $ 1, $ 1> $ 1 ".sh"
Это отпечатывает каждый файл, который вам нужен. Часть > 1 $ ".sh"
означает, что каждый скрипт оболочки записывается в файл, названный после загрузки файла с добавлением .sh
.
Еще другое предложение, использующее для петли
, printf
, а также замена команд $ ()
:
for file in $(<filenames); do
printf "%s\n%s\n" '#!/bin/bash' "wget ftp://host.com/dir1/dir2/${file}/${file}.sra" > "${file}.sh"
done
Нетребальная часть, вероятно, является $ (<имя файла)
, что эквивалентно $ (имя файла CAT)
, но немного быстрее.