kB schrieb:
Wenn es solche Effekte gibt, würde ich für diese Befehle
7z u -up0 Archiv_fuer_Abgleich.7z *.abc
7z u -up0 Archiv_fuer_Abgleich.7z '*.abc'
7z u Archiv_fuer_Abgleich.7z *.abc
7z u Archiv_fuer_Abgleich.7z '*.abc'
bei identischer Ausgangslage unterschiedliche Ergebnisse erwarten.
So ist es. Dann wollen wir mal:
Ausgangslage ist ein Archiv, das alle Dateien (außer die Archivdatei selbst) des Dateiverzeichnisses enthält:
7z l Archiv_fuer_Abgleich.7z | sed -n '19,$p'
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
2024-06-30 09:45:56 ....A 19 35 Lasagne.abc
2024-06-30 09:47:26 ....A 19 Lasagne.xyz
2024-06-30 09:45:43 ....A 19 Pizza.abc
2024-06-30 09:45:43 ....A 19 Spaghetti.abc
2024-06-30 09:45:56 ....A 19 Tandoori.abc
------------------- ----- ------------ ------------ ------------------------
2024-06-30 09:47:26 95 35 5 files
Nach dem Erstellen des Archivs wurde die Datei Tandoori.abc
im Verzeichnis gelöscht und die Datei Pizza.abc
geändert.
Fall 1:
7z u -up0 Archiv_fuer_Abgleich.7z *.abc
7z l Archiv_fuer_Abgleich.7z | sed -n '19,$p'
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
2024-06-30 09:45:56 ....A 19 35 Lasagne.abc
2024-06-30 09:45:43 ....A 19 Spaghetti.abc
2024-06-30 19:22:17 ....A 34 38 Pizza.abc
------------------- ----- ------------ ------------ ------------------------
2024-06-30 19:22:17 72 73 3 files
Fall 2:
7z u -up0 Archiv_fuer_Abgleich.7z '*.abc'
7z l Archiv_fuer_Abgleich.7z | sed -n '19,$p'
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
2024-06-30 09:45:56 ....A 19 35 Lasagne.abc
2024-06-30 09:45:43 ....A 19 Spaghetti.abc
2024-06-30 09:45:56 ....A 19 Tandoori.abc
2024-06-30 19:22:17 ....A 34 38 Pizza.abc
------------------- ----- ------------ ------------ ------------------------
2024-06-30 19:22:17 91 73 4 files
Fall 3:
7z u Archiv_fuer_Abgleich.7z *.abc
7z l Archiv_fuer_Abgleich.7z | sed -n '19,$p'
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
2024-06-30 09:45:56 ....A 19 35 Lasagne.abc
2024-06-30 09:47:26 ....A 19 Lasagne.xyz
2024-06-30 09:45:43 ....A 19 Spaghetti.abc
2024-06-30 09:45:56 ....A 19 Tandoori.abc
2024-06-30 19:22:17 ....A 34 38 Pizza.abc
------------------- ----- ------------ ------------ ------------------------
2024-06-30 19:22:17 110 73 5 files
Fall 4:
7z u Archiv_fuer_Abgleich.7z '*.abc'
7z l Archiv_fuer_Abgleich.7z | sed -n '19,$p'
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
2024-06-30 09:45:56 ....A 19 35 Lasagne.abc
2024-06-30 09:47:26 ....A 19 Lasagne.xyz
2024-06-30 09:45:43 ....A 19 Spaghetti.abc
2024-06-30 09:45:56 ....A 19 Tandoori.abc
2024-06-30 19:22:17 ....A 34 38 Pizza.abc
------------------- ----- ------------ ------------ ------------------------
2024-06-30 19:22:17 110 73 5 files
Zwar unterscheiden sich Fall 3 und Fall 4 hier nicht, das liegt aber nur daran, dass die Vorgabe jetzt p1
lautet. Anders sieht die Sache wieder aus, wenn man dann noch ein q0
hinzunimmt:
Fall 3a:
7z u -uq0 Archiv_fuer_Abgleich.7z *.abc
7z l Archiv_fuer_Abgleich.7z | sed -n '19,$p'
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
2024-06-30 09:45:56 ....A 19 35 Lasagne.abc
2024-06-30 09:47:26 ....A 19 Lasagne.xyz
2024-06-30 09:45:43 ....A 19 Spaghetti.abc
2024-06-30 09:45:56 ....A 19 Tandoori.abc
2024-06-30 19:22:17 ....A 34 38 Pizza.abc
------------------- ----- ------------ ------------ ------------------------
2024-06-30 19:22:17 110 73 5 files
Fall 4a:
7z u -uq0 Archiv_fuer_Abgleich.7z '*.abc'
7z l Archiv_fuer_Abgleich.7z | sed -n '19,$p'
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
2024-06-30 09:45:56 ....A 19 35 Lasagne.abc
2024-06-30 09:47:26 ....A 19 Lasagne.xyz
2024-06-30 09:45:43 ....A 19 Spaghetti.abc
2024-06-30 19:22:17 ....A 34 38 Pizza.abc
------------------- ----- ------------ ------------ ------------------------
2024-06-30 19:22:17 91 73 4 files
Im Fall 4a sorgt q0
dann dafür, dass die nicht mehr im Verzeichnis vorhandene Datei auch tatsächlich entfernt wird, weil die Shell das Muster nicht mehr interpretiert. Das hatte auch für mich gerade einen Lerneffekt: da könnte man den Umweg über die while-Schleife in den Beispielen auch direkt über Quoting lösen.