
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 I
e X
assim por diante sejam tratadas, você poderá usar apenas o sort
comando 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
-k
para 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 -n
para classificar numericamente
Se 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 seja portátil:
find . -path '*/*/*' -prune -o -type f | sort -n -k 1.5