45 votes

Commandes Linux pour copier un fichier vers plusieurs fichiers

Existe-t-il une commande/script en une ligne pour copier un fichier vers plusieurs fichiers sous Linux ?

cp file1 file2 file3

copie les deux premiers fichiers dans le troisième. Existe-t-il un moyen de copier le premier fichier dans les autres ?

74voto

ruakh Points 68789

Fait

cp file1 file2 ; cp file1 file3

compte comme une "commande d'une ligne/script" ? Que pensez-vous de

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

?

Ou, pour un sens un peu plus large du mot "copie" :

tee <file1 file2 file3 >/dev/null

8voto

Yevgen Points 71

juste pour le plaisir, si vous avez besoin d'une grande liste de fichiers :

tee <sourcefile.jpg targetfiles{01-50}.jpg >/dev/null - Kelvin Fév 12 à 19:52

Mais il y a une petite coquille. Ça devrait être :

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

Et comme mentionné ci-dessus, cela ne copie pas les permissions.

7voto

Lirt Points 326

Vous pouvez améliorer/simplifier le for approche (répondu par @ruakh) de la copie en utilisant gammes de extension des bagues de protection :

for f in file{1..10}; do cp file $f; done

Ces copies file en file1, file2, ..., file10 .

Ressource à vérifier :

3voto

Matt Points 6908
for FILE in "file2" "file3"; do cp file1 $FILE; done

2voto

Vous pouvez utiliser shift :

file=$1
shift
for dest in "$@" ; do
    cp -r $file $dest
done

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X