Imagine un archivo creado con:
truncate -s1T file
echo test >> file
truncate -s2T file
Ahora tengo un archivo de 2 tebibytes (que ocupa 4 KB en el disco), con "test\n"
escrito en el medio.
¿Cómo lo recuperaría de manera "test"
eficiente, sin tener que leer todo el archivo?
tr -d '\0' < file
Me daría el resultado, pero eso llevaría horas.
Lo que me gustaría es algo que solo muestre las partes no dispersas del archivo (por lo tanto, solo arriba "test\n"
o más probablemente, el bloque 4kiB asignado en el disco que almacena esos datos).
Hay API para averiguar qué parte del archivo está asignada (FIBMAP, FIEMAP, SEEK_HOLE, SEEK_DATA ...), pero ¿qué herramientas las exponen?
Se agradecería una solución portátil (al menos para los sistemas operativos que admiten esas API).
tr
desde que todavía lee todo el archivo y hace más que solo eliminar los bytes NUL.
strings
?