En Windows DOS, puedo usar el for
comando para aumentar enormemente la productividad y realizar millones de cosas a la vez. En PowerShell, es aún mejor. En Linux, tengo dificultades.
¿Cómo haría un lote de enlaces suaves a algunas carpetas en otra unidad?
Si ln -s 2013-02-*
lo hace, hace algo totalmente loco y crea enlaces en una carpeta aleatoria.
Entonces estoy tratando de usar la sustitución de comandos, pero probando echo
primero, el problema es que
echo 'prepend/'`ls /drive/ -1`
Solo antepone la cadena preprend/ a la primera entrada. Esto me dice que aunque la sustitución de comandos funcionó con un comando de eliminación una vez, no funciona como pensaba (produciendo un solo comando para cada resultado de ls).
Volví a necesitar un bucle for. ¿Cómo hago para que "foreach $row in (ls -1) haga (algo)"?
Respuesta1
Comenzando en la carpeta donde desea los enlaces, esto funcionará:
ln -s sourcefolder/2013-02-* .
Por supuesto, existe un comando "para" perfectamente razonable:
for var in path/* ; do echo "prepend$var" ; done
Editar: el medio general de usar un programa para proporcionar una lista de argumentos a otro son las comillas invertidas: ``, por lo que puedes hacer:
for x in `ls -1` ; do program $x ; done
Sin embargo, ls tiene algo de magia para que no necesites poner -1 si lo estás usando como entrada para otro programa; y puede obtener una lista de archivos con un patrón * ("glob").