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 unzip
alle 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 rm
oder nichts finden zip
.
Ich benutze das Terminal auf einem Mac (Yosemite).
unzip
Wendet 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. tar
hat keine solche Betriebsart.
unzip
dass dies ohne die normalefor f in *.zip;do...done
Shell-Schleife möglich wäre. Solch eine seltsame, nicht unixartige Befehlszeilen-Benutzeroberfläche.