Ich habe ein Skript zusammengestellt, um einige Dateioperationen für mich durchzuführen. Ich verwende den Platzhalter-Operator *, um Funktionen auf alle Dateien eines Typs anzuwenden, aber eines verstehe ich nicht. Ich kann unzipalle Dateien in einem solchen Ordner speichern
unzip "*".zip
Um danach jedoch alle zip-Dateien zu entfernen, muss ich Folgendes tun
rm *.zip
Das heißt, die Anführungszeichen werden nicht benötigt. Das Entpacken funktioniert dagegen nicht, wenn ich nur das * gebe (warnt mich, dass "Dateien nicht übereinstimmen").
Warum ist das anders? Für mich scheint dies genau die gleiche Operation zu sein. Oder verwende ich den Platzhalter falsch?
Einführungen in die Wildcard in Unix gehen nicht wirklich darauf ein, und ich konnte in den Dokumenten rmoder nichts finden zip.
Ich benutze das Terminal auf einem Mac (Yosemite).
unzipWendet den Glob auf den Inhalt eines Archivs an. Sie können sie nicht mit einem Platzhalter erhalten. (Du brauchst `` `für f in unzip -l archive.zip; do ... done`)
unzip, dass Globs akzeptiert werden, die in einer einzelnen Zip-Datei enthalten sind. Das ist aber anders; Ich habe es tatsächlich unzip '*.zip'in einem Verzeichnis mit mehreren Zip-Dateien versucht , und es extrahiert alle Dateien aus allen Zip-Dateien. Wie ich schon sagte, super komisch. tarhat keine solche Betriebsart.
unzipdass dies ohne die normalefor f in *.zip;do...doneShell-Schleife möglich wäre. Solch eine seltsame, nicht unixartige Befehlszeilen-Benutzeroberfläche.