No se puede hacer un rango de archivos ficticios
Pregunta
Necesito hacer archivos llamados desde File1, File2, ... a File99.
Intenté lo siguiente sin éxito
cat test > {File1 .. File99}
El comando sin la palabra Archivo no funcionó.
Solución
Solo un comando:
touch File{1..99}
Otros consejos
$ for i in {1..100}; do touch "File$i"; done
Esto dependerá del shell que esté utilizando. Supongo que estás usando Bash.
De acuerdo con http://www.gnu.org /software/bash/manual/bashref.html#Brace-Expansion , Bash expandirá dígitos y caracteres individuales. Por lo tanto, su expresión de llaves debería ser:
File{1..99}
Pero no creo que el operador de redirección " > " puede salir a múltiples archivos. Es posible que deba usar un bucle:
for output in File{1..99}
do
cat test > $output
done
O como una línea:
for output in File{1..99}; do cat test > $output; done
Si prefiere una versión sin bucle, puede usar tee
cat test | tee File{1..99} > /dev/null
Con zsh (con sus mult_ios ) puedes :)
% zsh -c 'print test > file{1..3}'
% head file*
==> file1 <==
test
==> file2 <==
test
==> file3 <==
test
Si desea que los archivos se ordenen correctamente (file01, file02 ... file10, etc.), haga lo siguiente:
for i in {0..10}; do i="0"$i; touch file${i: -2}; done
Que es lo mismo que:
for i in {0..10}
do
i="0"$i
touch file${i: -2} # or cat file > file${i: -2}
done
Debe haber un espacio entre los dos puntos y el guión en la cláusula de expansión de la subcadena. Puede comenzar los rangos anteriores con 1 si desea comenzar con " file01 " ;.
O, una forma mucho más sucinta de tener ceros a la izquierda:
touch file{0..9}{0..9}
y para usar la técnica de phyrex1an con esta:
cat test | tee File{0..9}{0..9} > /dev/null
Esto hace que un archivo adicional "file00". También puede hacer " {2..3} {0..9} " para " archivo20 " a través de " file39 " ;, pero cambiar el dígito de las unidades (el segundo rango) provocaría que se omitan partes de la secuencia.