Procurando um arquivo em uma pasta com padrão numérico

0

Eu dei abaixo o comando find para encontrar e listar todos os arquivos em uma pasta. Os arquivos estão listados em ordem alfabética, mas quero listar todos os arquivos em padrão numérico. quando eu usei "-number" no lugar de "-name" ele não está funcionando.

find . -type f -name '*'
I100001093
I200001093
I300001093
XB00001093
I100001094
I200001094
I300001094
XB00001094
I100001095
I200001095
I300001095
XB00001095

alguém pode me sugerir o comando certo para listar em ordem numérica.

    
por amarnadh manikanta 24.05.2017 / 14:28

1 resposta

1

Dependendo de como você deseja que as partes I e X e assim por diante sejam manipuladas, talvez seja possível usar apenas o comando sort como:

find . -type f | sort -n

Se essa não for a ordem de classificação desejada, você terá que nos fornecer mais detalhes (e, idealmente, nos mostre a saída desejada do seu exemplo).

Dado que você deseja agrupar o início dos nomes juntos, podemos especificar o campo-chave a ser classificado. Como a saída do find começará com ./{id} , com os próximos dois caracteres (aparentemente) relacionados em um lote juntos, podemos começar a classificação a partir do quinto caractere on line, especificando a chave de classificação:

find . -type f | sort -n -k 1.5

-k para classificação permite que você especifique a chave na qual classificar, aqui estamos classificando no primeiro campo, mas iniciando no quinto caractere e usando -n para ordenar numericamente

Se você quiser apenas o diretório atual, você pode usar -maxdepth como em:

find . -maxdepth 1 -type f | sort -n -k 1.5

se você quiser que ele seja portátil:

find . -path '*/*/*' -prune -o -type f | sort -n -k 1.5
    
por 24.05.2017 / 14:33