copiando subdiretórios que não contêm um arquivo específico em outro diretório

1

Eu tenho um diretório chamado dir1 que tem cerca de 800 subdiretórios chamados disp-001, disp-002, ... disp-800 . Eu recebo a lista de subdiretórios que não contém um arquivo stdout com base na solução dada aqui como

$ find . -type d \! -exec test -e '{}/stdout' \; -print

Gostaria agora de copiar os subdiretórios que não contêm o arquivo em outro diretório dir2. Eu uso xargs para conseguir isso como

$ find . -type d \! -exec test -e '{}/stdout' \; -print |xargs -I cp -r {} ../dir2

No entanto, isso me lança um erro xargs: {}: No such file or directory

Como posso copiar esses subdiretórios para outro diretório

    
por WanderingMind 22.09.2015 / 17:05

1 resposta

2

Não há necessidade de xargs ; find pode lidar com isso:

find . -mindepth 1 -type d \! -exec test -e '{}/stdout' \; -exec echo cp -r '{}' ../dir2 \;

ou com uma versão moderna de find , \+ fará find fazer uma coisa semelhante a xargs (ou, o horror, 800 garfos!)

  • Você precisa de -mindepth 1 para excluir a pasta ./ que, de outra forma, Copie todos os subdiretórios.
  • O comando -exec contém uma opção de depuração echo para ver o processo a ser realizado antes de executar a cópia
por 22.09.2015 / 17:18