В Windows DOS я могу использовать for
команду для значительного повышения производительности и выполнения миллиардов дел одновременно. В PowerShell это еще лучше. В Linux я борюсь.
Как мне создать пакет мягких ссылок на некоторые папки на другом диске?
Если ln -s 2013-02-*
это сделать, то произойдет что-то совершенно безумное и ссылки будут помещены в случайную папку.
Итак, я пытаюсь использовать подстановку команд, но echo
сначала проверяю, проблема в том, что
echo 'prepend/'`ls /drive/ -1`
Добавляет только строку preprend/ к первой записи. Это говорит мне, что хотя я и заставил подстановку команд работать с командой remove один раз, она работает не так, как я думал (производя одну команду для каждого результата ls).
Мне снова нужен цикл for. Как сделать "foreach $row in (ls -1) do (something)"?
решение1
Начиная с папки, в которую вы хотите добавить ссылки, это сработает:
ln -s sourcefolder/2013-02-* .
Конечно, есть вполне разумная команда «for»:
for var in path/* ; do echo "prepend$var" ; done
Редактировать: общий способ использования одной программы для предоставления списка аргументов другой - это обратные кавычки: ``, поэтому вы можете сделать:
for x in `ls -1` ; do program $x ; done
Однако в ls есть некая магия, так что вам не нужно вводить -1, если вы используете его в качестве входных данных для другой программы; и вы можете просто получить список файлов с помощью шаблона * ("glob").