No Windows DOS, posso usar o for
comando para aumentar enormemente a produtividade e executar zilhões de coisas ao mesmo tempo. No PowerShell, é ainda melhor. No Linux, eu tenho dificuldade.
Como eu faria um lote de links virtuais para algumas pastas em outra unidade?
Se ln -s 2013-02-*
isso acontecer, ele fará algo totalmente maluco e criará links em uma pasta aleatória.
Então, estou tentando usar a substituição de comando, mas testando echo
primeiro, o problema é que
echo 'prepend/'`ls /drive/ -1`
Acrescenta apenas a string preprend/ à primeira entrada. Isso me diz que, embora eu tenha feito a substituição de comando funcionar com um comando remove uma vez, ela não funciona da maneira que pensei (produzindo um único comando para cada resultado ls).
Voltei a precisar de um loop for. Como faço "foreach $row in (ls -1) do (something)"?
Responder1
Começando na pasta onde você deseja os links, isso funcionará:
ln -s sourcefolder/2013-02-* .
É claro que existe um comando "for" perfeitamente razoável:
for var in path/* ; do echo "prepend$var" ; done
Editar: o meio geral de usar um programa para fornecer uma lista de argumentos para outro são crases: ``, então você pode fazer:
for x in `ls -1` ; do program $x ; done
No entanto, ls tem alguma mágica para que você não precise colocar -1 se estiver usando-o como entrada para outro programa; e você pode simplesmente obter uma lista de arquivos com um padrão * ("glob").