![Usando xargs com comando mv e mkdir no Linux](https://rvso.com/image/1317540/Usando%20xargs%20com%20comando%20mv%20e%20mkdir%20no%20Linux.png)
Estou tentando criar um diretório usando o comando mkdir
. No entanto, gostaria de mover um subconjunto de arquivos para esse diretório. Eu entendo que posso usarxargs, no entanto, minhas tentativas falharam. Por exemplo, eu tentei mkdir test | xargs -i mv test.text {}
. Ele cria o diretório, mas não move o arquivo test.txt
para ele depois de criado.
Responder1
mkdir
não produz nada, portanto xargs
não fará nada de útil. Não entendo exatamente o que você quer fazer, então você deve explicar melhor sua pergunta.
"gostaria de mover um subconjunto de arquivos para esse diretório" -> os arquivos neste subconjunto compartilham uma ou mais características? Se sim, use oencontrarcomando assim:
find [conditions] -exec mv "{}" dirname \;
Se quiser evitar digitar o nome do diretório duas vezes, ou se estiver fazendo isso a partir de um script, você pode fazer algo como
dirname=test
mkdir $dirname && mv filename $dirname
Responder2
Não acho que mkdir produza nenhuma saída para canalizar para xargs.
Fazer "mkdir test1 test2 testhello3 | grep hello" não produz nenhuma saída, enquanto fazer "ls | grep hello" me mostrará "testhello3".
Você pode produzir as pastas primeiro e depois usar ls, grep e xargs para fazer isso?
ls | grep (unique search to get folder name) | xargs -i mv test.txt {}
Talvez mais informações sobre os critérios de movimentação de arquivos e outros sejam úteis.
Responder3
Meu palpite, próximo à resposta do usuário49740:
mkdir test && find -type f -name 'test.*' -exec mv {} test \;
quantos diretórios diferentes você deseja criar?