Usando xargs com o comando mv e mkdir no Linux

0

Eu 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 eu posso usar xargs , no entanto minhas tentativas falharam. Por exemplo, tentei mkdir test | xargs -i mv test.text {} . Ele cria o diretório, mas não move o arquivo test.txt para ele depois que ele foi criado.

    
por PeanutsMonkey 06.06.2012 / 19:40

3 respostas

1

mkdir não produz nada, portanto, xargs não fará nada útil. Eu 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 deste subconjunto compartilham um ou mais traços? Se sim, use o comando localizar assim:

find [conditions] -exec mv "{}" dirname \;

Se você 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
    
por 06.06.2012 / 19:50
1

Eu não acho que o mkdir produza qualquer saída para pipe para xargs.

Fazer "mkdir test1 test2 testhello3 | grep hello" não produz nenhum resultado enquanto "ls | grep hello" me mostra "testhello3".

Você pode produzir as pastas primeiro e, em seguida, usar ls, em seguida, grep e, em seguida, xargs para fazer isso?

ls | grep (unique search to get folder name) | xargs -i mv test.txt {}

Talvez mais informações sobre critérios de movimentação de arquivos sejam úteis.

    
por 06.06.2012 / 19:49
1

Meu palpite, perto da resposta de user49740:

mkdir test && find -type f -name 'test.*' -exec mv {} test \;

quantos diretórios diferentes você deseja criar?

    
por 06.06.2012 / 22:24

Tags