2012-03-03 17 views

Respuesta

46

sí cuenta

cp file1 file2 ; cp file1 file3 

como "una sola línea de comandos/script"? ¿Qué hay de

for file in file2 file3 ; do cp file1 "$file" ; done 

?

O, para un sentido ligeramente más flojo de la "copia":

tee <file1 file2 file3 >/dev/null 
+8

más uno para 'tee' – knittl

+4

' tee file2 file3' – jfs

+2

@JFSebastian: Sí, pero como el OP claramente quiere que esto funcione para más de dos archivos de destino, opté por el formulario que destaca el soporte para ese. ¿Tal vez debería haber escrito 'tee file2 file3 file4' y prescindir del paralelismo de dos archivos? – ruakh

0

La solución más simple/más rápido que puedo pensar es en un bucle for:

for target in file2 file3 do; cp file1 "$target"; done 

Un truco sucio sería el siguiente (Recomiendo enfáticamente que no funcione, y solo funciona en bash de todos modos):

eval 'cp file1 '{file2,file3}';' 
0

Puede usar el comando de scripting estándar s para que en su lugar:

Bash:

for i in file2 file3 ; do cp file1 $i ; done 
2
for FILE in "file2" "file3"; do cp file1 $FILE; done 
1

Puede utilizar shift:

file=$1 
shift 
for dest in "[email protected]" ; do 
    cp -r $file $dest 
done 
+1

¿Cuál es el efecto de' shift'? –

0

usar algo como lo siguiente. Funciona en zsh.

archivo cat>>> thirdCopy

o

archivo firstCopy secondCopy cat> {1..100} - para nombres de archivo con los números.

Es bueno para archivos pequeños.

Debe utilizar el script cp mencionado anteriormente para archivos más grandes.

+1

Asume que el shell es 'zsh' –

+0

//, Esto no funcionó en Bash. –

+0

¿Por qué importa el tamaño de los archivos? ¿Limitado por el tamaño de la RAM? –

1

sólo por diversión, si usted necesita una gran lista de archivos:

tee <sourcefile.jpg targetfiles{01-50}.jpg >/dev/null - Kelvin Feb 12 at 19:52

Pero hay un pequeño error tipográfico. En caso de ser:

tee <sourcefile.jpg targetfiles{01..50}.jpg >/dev/null

Y como se mencionó anteriormente, que no copia permisos.

Cuestiones relacionadas