Mover arquivo com base na condição

0

Alguém pode me ajudar a encontrar uma solução para minha exigência?

o requisito é que eu tenho que escrever um script de shell que irá varrer um diretório e ler cada arquivo que chega a ele e irá procurar por uma cadeia começa com (como "AB00732614") Ele irá procurar por todos os arquivos que contenham AB * Ele moverá o arquivo para outro diretório.

    
por Jiten 13.03.2017 / 12:42

2 respostas

1

Supondo que a string AB -etc. faz parte do conteúdo dos arquivos a serem movidos:

find /path/to/dir -type f -exec grep -qE 'AB[0-9]{8}' {} \; -exec mv -i {} /path/to/destination/ \;

Isso usa find para encontrar todos os arquivos regulares em /path/to/dir . Para cada arquivo, grep verificará se contém alguma coisa que corresponda à expressão regular estendida AB[0-9]{8} (a string AB seguida por exatamente oito dígitos). Em caso afirmativo, o arquivo é movido para o diretório /path/to/destination/ .

Se outro arquivo com o mesmo nome do arquivo que está sendo movido já estiver no diretório de destino, você precisará confirmar que deseja substituir esse arquivo.

    
por 13.03.2017 / 13:09
0

Você pode usar:

find . -type f -iname 'AB*' -exec mv -t ./another_directory/ {} \+

É muito bem explicado aqui: link

Espero que ajude:)

    
por 13.03.2017 / 12:51