
He proporcionado el siguiente comando de búsqueda para buscar y enumerar todos los archivos en una carpeta. Los archivos se enumeran en orden alfabético, pero quiero enumerar todos los archivos en un patrón numérico. cuando utilicé "-número" en lugar de "-nombre", no funciona.
find . -type f -name '*'
I100001093
I200001093
I300001093
XB00001093
I100001094
I200001094
I300001094
XB00001094
I100001095
I200001095
I300001095
XB00001095
¿Alguien puede sugerirme el comando correcto para enumerarlo en orden numérico?
Respuesta1
Dependiendo de cómo desee que se manejen las partes I
y X
demás, es posible que pueda usar el sort
comando como:
find . -type f | sort -n
Si ese no es el orden de clasificación que desea, deberá brindarnos más detalles (e idealmente mostrarnos el resultado deseado de su ejemplo).
Dado que desea agrupar el inicio de los nombres, podemos especificar el campo clave para ordenar. Dado que la salida de buscar comenzará con ./{id}
los siguientes dos caracteres (aparentemente) relacionados en un lote, podemos comenzar a ordenar desde el quinto carácter en línea especificando la clave de clasificación:
find . -type f | sort -n -k 1.5
-k
para ordenar le permite especificar la clave por la cual ordenar, aquí estamos ordenando en el primer campo, pero comenzando en el quinto carácter y luego usando -n
para ordenar numéricamente
Si desea sólo el directorio actual, puede utilizar -maxdepth
como en:
find . -maxdepth 1 -type f | sort -n -k 1.5
si quieres que sea portátil:
find . -path '*/*/*' -prune -o -type f | sort -n -k 1.5