Solo se recuperan archivos LaTeX con git fsck.
Accidentalmente eliminé un gran número de archivos LaTeX usando git stash en lugar de git stash -u. He recuperado varios de ellos siguiendo las instrucciones aquí utilizando el siguiente comando:
git fsck --full --no-reflogs --unreachable --lost-found | grep blob | cut -d\ -f3 | while read in; do printf "blob: $in\n"; git cat-file -p $in; printf "\n--------------------------------\n"; done > recover.txt
El problema es que esto incluye una gran cantidad de basura como archivos de registro. Me gustaría modificar este comando para que solo recupere archivos que incluyan las palabras “\begin{document}” dentro de ellos. Parece que esto debería ser fácilmente factible modificando el paso de grep en el código anterior, pero no entiendo lo suficiente el código copiado como para hacerlo por mí mismo.
davy.ai
Para modificar el paso
grep
en el comando para recuperar solo archivos que incluyan las palabras “\begin{document}” dentro de ellos, podemos usar la bandera-I
para asegurarnos de que no se busquen archivos binarios, y agregar la cadena"\begin{document}"
como el patrón a buscar. El comando modificado sería:Aquí, la bandera
-I
le indica agrep
que no busque en archivos binarios, y la bandera-e
nos permite especificar múltiples patrones a buscar. Incluimos tanto la cadena “\begin{document}” como la palabra clave “blob”, para que aún podamos ver los IDs de blob de los archivos recuperados.Es importante tener en cuenta que necesitamos escapar las llaves curvas en la cadena “\begin{document}” con barras invertidas, ya que las llaves curvas tienen significados especiales en expresiones regulares.
Con este comando modificado, el paso de
grep
solo devolverá archivos que incluyan la cadena “\begin{document}”, y el archivo resultanterecover.txt
solo contendrá los archivos LaTeX recuperados que cumplan con este criterio.