Usando um terminal Linux/Unix para copiar muitos arquivos para um novo local

Usando um terminal Linux/Unix para copiar muitos arquivos para um novo local

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

xargsnã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 -isinalizador 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)

informação relacionada