¿Se garantiza que la expansión de un comodín en Bash esté en orden alfabético? Me veo obligado a dividir un archivo grande en piezas de 10 Mb para que puedan ser aceptadas por mi repositorio de Mercurial.
Entonces pensé que podría usar:
split -b 10485760 Big.file BigFilePiece.
y luego en lugar de:
cat BigFile | bigFileProcessor
Yo podría hacer:
cat BigFilePiece.* | bigFileProcessor
en su lugar.
Sin embargo, no pude encontrar ningún lugar que garantizara que la expansión del asterisco (también conocido como comodín *) siempre estaría en orden alfabético, por lo que .aaocurrió antes .ab(en lugar de ser un orden de marca de tiempo o algo así).
Además, ¿hay fallas en mi plan? ¿Qué tan grande es el costo de rendimiento de catreunir el archivo?
bash
files
wildcard
large-data
Trineo
fuente
fuente

sortsi necesita alguna manipulación de pedido adicional.hg commiten unNarchivo MB requiere aproximadamente3 * NMB de RAM yhg updaterequiere aproximadamente2 * NMB de RAM. Esto es con Mercurial 1.5 en Linux.Respuestas:
Sí, la expansión global es alfabética.
Desde la
manpágina Bash :fuente
ls -l [[:lower:]]lugar dels -l [a-z].mkdir lctest; cd lctest; touch w; touch z; ls -l [:lower:]; echo =====; ls -l [[:lower:]]. El archivo "z" solo aparece en una lista por el segundolsporque está pidiendo nombres de archivo de una letra en minúscula. El primerols, el que no tiene corchetes externos, es pedir nombres de archivo de un solo carácter de la lista de caracteres ":", "l", "o", "w", "e" y "r". En ambos casos, los corchetes más externos delimitan una expresión de corchete que enumera caracteres y clases. En el caso de[[:lower:]], los corchetes internos, los dos puntos y la palabra nombran una clase de caracteres. ...Es un comportamiento documentado para
bashque pueda depender de él en sus scripts. También ha sido cierto para otros shells compatibles con Bourne durante mucho tiempo ... aunque puede haber casos de esquina con respecto al plegado de mayúsculas o caracteres no alfanuméricos.(La lista resultante, en
bash, estará en un orden casi "ASCII-betical" --- excepto que las letras minúsculas y mayúsculas se clasificarán juntas como si no hubiera diferencias entre mayúsculas y minúsculas antes de sus equivalentes en mayúsculas. -alfabetics deben clasificarse en el mismo orden que aparecen en ASCII).Como otros han señalado, esto podría verse afectado por la configuración del entorno relacionado con el idioma: LANG en general y LC_COLLATE más específicamente. Es posible que sea más seguro ejecutar comandos que dependen del orden de expansión global bajo un
envcomando para limpiar el entorno (utilizando-io-usegún corresponda) o canalizar los resultadossortpara garantizar una secuencia sólida.fuente
Si bien las expansiones glob están ordenadas alfabéticamente, también obedecen a la configuración del idioma del caparazón.
Asegúrese de establecer esto en "C" en su secuencia de comandos si tiene la intención de que sea portátil.
fuente