Tengo una estructura de directorios como esta.
Code
├── cse701.tgz
└── cse701
├── cse701.md
├── CSE701.md
├── CSE701_pandoc.md
├── cse701.pdf
├── cse.pdf
├── default.yaml
├── html2tex.log
├── test.md
└── missing.md
Y el tarball tiene una estructura como:
drwxrwxr-x zenith/zenith 0 2020-12-02 20:18 cse701/
-rw-rw-r-- zenith/zenith 0 2020-12-02 21:19 cse701/default.yaml
-rw-rw-r-- zenith/zenith 0 2020-12-02 21:19 cse701/CSE701.md
-rw-rw-r-- zenith/zenith 0 2020-12-02 21:19 cse701/CSE701_pandoc.md
-rw-rw-r-- zenith/zenith 0 2020-12-02 21:19 cse701/html2tex.log
-rw-rw-r-- zenith/zenith 0 2020-12-02 21:19 cse701/test.md
-rw-rw-r-- zenith/zenith 0 2020-12-02 21:19 cse701/cse701.pdf
-rw-rw-r-- zenith/zenith 0 2020-12-02 21:19 cse701/cse.pdf
-rw-rw-r-- zenith/zenith 0 2020-12-02 21:19 cse701/cse701.md
tar --diff -zf cse701.tgz cse701/
tar --compare -zf cse701.tgz ./cse701/
Las opciones de diferenciación y comparación como se muestran enesta publicaciónDebo señalar que falta un archivo del disco que no está en el tarball.
sin embargo, eldocumentos de alquitrán gnudice que mostrará si los archivos han sido modificados, pero ignorará los archivos en el sistema de archivos que no tengan miembros correspondientes en el archivo. Si un archivo está representado en el archivo pero no existe en el sistema de archivos, tar informa una diferencia.
Entonces, ¿cómo puedo saber si se agregaron archivos nuevos a la carpeta después de crear el tarball?
Respuesta1
Esto no es una sola línea, pero hace lo que quieres:
cd /path/to/Code
tar -tf cse701.tgz | sed 's#/$##' >tgz
find cse701 >fs
diff -uw fs tgz
rm fs
rm tgz
Explicación:
- Primero cambiamos al directorio correspondiente.
- Luego enumeramos el contenido tar.gz, eliminando
/
es al final de la línea (tar -t
los coloca allí para los directorios) - Luego encontramos todos los archivos y directorios en el subárbol del sistema de archivos correspondiente (
find
colocaNo/
es al final) - Diferenciamos esas dos listas
- y limpiar