2

Как я могу перевести следующую команду CMD в команду в linux centos 6,64?

for /f "tokens=1*" %i in (links.txt) do wget -O "%j" "%i"

PS: links.txt - это файл с двумя столбцами, разделенными табуляцией, один со ссылкой, а другой с названием того, как сохранить файл.

Спасибо

1 ответ1

2

awk

Даже если есть возможность прочитать из файла и составить команду, которую вы хотите в цикле, есть команда, которую вы можете найти более удобной: awk .

Если имя файла не содержит пробелов, вы можете использовать этот простой синтаксис для создания нужной команды, а затем перенаправить (|) этот вывод в оболочку (sh), которая его выполнит.
С $1 долларом Вы берете 1-ую колонку, с $2 вторым и так далее ...

awk '{print "wget -O "$2,$1}' links.txt | sh

Если в именах есть пробелы, вам нужно больше заниматься в тренажерном зале:

awk -F $'\t' '{print "wget -O\""$2"\" " $1}' links.txt | sh

Здесь вы должны указать, что разделитель полей -F является вкладкой (-F $'\t'), и вы должны напечатать " до и после имени файла. Поскольку вы находитесь внутри строки, вам нужно убежать [ 2 ] из них
echo "Those are double quote\"" .

Попробуйте эту команду без перенаправления (то есть без | sh ), чтобы иметь возможность управлять выводом, затем выполните ее, когда вы уверены ...

Используйте man awk чтобы получить дополнительную помощь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .