O núcleo de uma função que tenho no meu .bashrc
para isso é:
echo $destinations | xargs -n 1 cp $sourcefile
(Eu acho que consegui isso de esta resposta ) Se os destinos estiverem em destinations.txt
, basta substituir echo $destinations
com cat destinations.txt
Nomes de arquivos com espaços lhe darão problemas, a menos que sejam citados na entrada, portanto, tenha cuidado com isso.
Aqui está a função completa do meu .bashrc
. Provavelmente não muito robusto, já que meus casos de uso eram simples e eu não queria gastar muito com isso, então não espere que ele lide com nomes de arquivos mais estranhos muito graciosamente.
function distribute {
arguments=""
destinations=""
sourcefile=""
while [[ $# -ge 1 ]]; do
key="$1"
if [[ "$key" == "-h" ]]; then
echo "usage: $0 [flags to cp] source_file destination_1 [... destination_N]"
elif [[ "$key" == -* ]]; then
arguments+=" $key"
elif [ -z "$sourcefile" ]; then
sourcefile="$key"
else
destinations+=" $key"
fi
shift
done
echo $destinations | xargs -n 1 cp $arguments $sourcefile
}