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

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

Forneci abaixo o comando find para localizar 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 usei "-number" no lugar de "-name" 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 correto para listar em ordem numérica.

Responder1

Dependendo de como você deseja que as partes Ie Xassim por diante sejam tratadas, você poderá usar apenas o sortcomando 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, de preferência, mostrar-nos a saída desejada do seu exemplo).

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

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

-kpara classificação permite que você especifique a chave na qual classificar, aqui estamos classificando no primeiro campo, mas começando no 5º caractere e usando -npara classificar numericamente

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

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

se você quiser que seja portátil:

find . -path '*/*/*' -prune -o -type f | sort -n -k 1.5

informação relacionada