Estou tentando usar um terminal Linux para copiar muitos arquivos para um novo local. Cansei do comando:
sudo localizar -iarquivo_eu_quero| xargs cp $1 /place_I_want_everything_copied_to/
O que dá um erro. Qual é a maneira correta de lidar com isso?
Responder1
xargs
não funciona assim. Não usa $ 1. Normalmente apenas adia o argumento para o final da lista de parâmetros. Mas neste caso não funcionará, pois é o alvo, não o destino e um parâmetro final não é o que é necessário.
Confira o -i
sinalizador para xargs, ele permite que você faça uma substituição. O padrão é usar {}, acho que para ser consistente comfind
sudo locate -i *file_I_want* | xargs -i cp {} /place_I_want_everything_copied_to/
O comentário de @javano também é uma resposta, mas seria interrompido se houvesse espaços nos nomes dos arquivos (embora eu acredite que os espaços também interromperiam o uso de xargs acima)