Obtém o caminho de arquivo dos diretórios contendo um tipo de arquivo particular em ordem alfabética / numérica [duplicado]

0

Eu tenho um diretório que contém 800 subdiretórios denominados disp-001 ... disp-800 . Todos esses subdiretórios precisam conter um arquivo específico, digamos stdout . Um deles não contém o arquivo e eu preciso encontrar a pasta que não tem o arquivo. Se eu tentar

find . -name "stdout"

ele me retorna os valores de todos os arquivos, mas eles não são ordenados de 001 a 800, o que torna muito difícil identificar a pasta. Existe uma maneira de ordenar a saída de forma que eles sejam ordenados numericamente?

NOTA:

Estou deixando essa questão sem edição para demonstrar (pelo menos para mim mesmo) um clássico XY problema . Tudo o que eu precisava era identificar diretórios que não contivessem um arquivo em particular, mas, em vez disso, essa questão era sobre uma tentativa particular de solução para o problema. A solução para encontrar um diretório que não contenha um arquivo específico é fornecida aqui .

    
por WanderingMind 11.09.2015 / 18:06

1 resposta

3

Pessoalmente, eu usaria o shell para isso:

$ for dir in disp-{001..800}; do [ -f "$dir"/stdout ] || echo "$dir"; done
disp-389

No meu teste, disp-389 foi o único diretório que faltava esse arquivo e, portanto, o único que foi impresso.

Se o seu shell não suportar essa forma de expansão de chaves, use apenas for dir in disp* ou, supondo que você queira verificar todos os diretórios, for dir in */ .

    
por 11.09.2015 / 18:18