find exclui vários diretórios - z / OS USS Region

0

Na região do z / OS (Mainframe versão 2.1) Unix System Services, estou tentando executar um comando que envolve encontrar assim:

digamos que eu tenha a seguinte estrutura de diretórios:

/tmp
    /dir1-include
    /dir2-exclude
    /dir3-include
    /dir4-exclude

Estou tentando obter uma contagem de todos os arquivos com mais de 90 dias em dir1-include e dir3-include . Este comando a seguir parece não funcionar:

find /tmp/ \( -path /dir2-exclude -prune -o \
                  -path /dir4-exclude -prune \
               \) \
               -o -type f -mtime +90 | wc -l

Isso me dá:

FSUM6372 Unknown option "-path"
Usage: find directory ... expression'
    
por code4kix 18.04.2018 / 17:51

1 resposta

1

Existem muitas maneiras de fazer isso. Todas as opções abaixo funcionaram no z / OS.

Se o seu find não for compatível com -path e desde que você esteja assumindo que nenhum nome de arquivo conterá novas linhas (canalizando para wc ), você poderá contorná-lo com grep :

find /tmp/ -type f -mtime +90 | grep -v /tmp/dir2-exclude | grep -v /tmp/dir4-exclude | wc -l

Se seus diretórios excluídos compartilharem um padrão (isso não exclui nada que você queira manter), você pode simplificá-lo para:

find /tmp ... | grep -cv '/tmp/dir.*-exclude'

... novamente com o entendimento de que isso contará erroneamente a saída de encontrar se há diretórios ou nomes de arquivos com novas linhas neles.

Se o seu find suportar vários caminhos iniciais e os que você deseja incluir compartilharem um padrão, você poderá trabalhar dessa maneira:

find /tmp/dir*-include -type f -mtime +90 | wc -l

Além disso, a opção -prune não fica abaixo dos diretórios mencionados.

find /tmp/ -type d -name "/dir2-exclude" -prune -o -type d -name "/dir4-exclude" -prune -o -type f -mtime +90 | wc -l
    
por 18.04.2018 / 20:10

Tags