GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum ist das Platzhalterzeichen * zwischen den Befehlen Zip und Rm so unterschiedlich?

Ich habe ein Skript zusammengestellt, um einige Dateioperationen für mich auszuführen. Ich verwende den Platzhalteroperator * Funktionen auf alle Dateien eines Typs anzuwenden, aber eines verstehe ich nicht. Ich kann unzip alle Dateien in einem Ordner wie diesem

unzip "*".zip

Um jedoch alle ZIP-Dateien danach zu entfernen, muss ich tun

rm *.zip

Das heißt, die Anführungszeichen sind nicht erwünscht. Das Entpacken hingegen funktioniert nicht, wenn ich nur das * gebe (gibt mir eine Warnung, dass „files were not matched“).

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 Wild Card in Unix gehen nicht wirklich darauf ein, und ich konnte nichts im rm finden oder zip Dokumente.

Ich verwende das Terminal auf einem Mac (Yosemite).

Akzeptierte Antwort:

Du hast die Situation sehr gut beschrieben. Das letzte Stück des Puzzles ist das unzip kann Platzhalter selbst behandeln:

http://www.info-zip.org/mans/unzip.html

ARGUMENTE

Datei[.zip]

Wildcard-Ausdrücke ähneln denen, die in häufig verwendeten Unix-Shells (sh, ksh, csh) unterstützt werden, und können enthalten:

* entspricht einer Folge von 0 oder mehr Zeichen

Durch das Anführen des Platzhalters * haben Sie Ihre Shell daran gehindert, es zu erweitern, sodass unzip sieht den Platzhalter und verarbeitet ihn gemäß seiner eigenen Logik.

rm dagegen unterstützt allein keine Platzhalter , also wird beim Versuch, einen Platzhalter in Anführungszeichen zu setzen, rm angewiesen um stattdessen nach einem wörtlichen Sternchen im Dateinamen zu suchen.

Der Grund, warum unzip *.zip wird nicht funktioniert, ist das unzip Die Syntax erlaubt einfach nicht mehrere ZIP-Dateien; wenn es mehrere Parameter gibt, erwartet es, dass der zweite und die folgenden Dateien im Archiv sind:

entpacken [-Z] [-cflptTuvz[abjnoqsCDKLMUVWX$/:^]] Datei[.zip] [Datei(en) …] [-x xDatei(en) …] [-d exdir]


Linux
  1. Der Unterschied zwischen Halt- und Shutdown-Befehlen?

  2. Der Unterschied zwischen [[ $a ==Z* ]] und [ $a ==Z* ]?

  3. Was ist der Unterschied zwischen ls und l?

  4. Unterschied zwischen 'ifconfig'- und 'ip'-Befehlen

  5. Was ist der Unterschied zwischen unlink und rm?

Was ist der Unterschied zwischen Linux und Unix?

Der Unterschied zwischen mehr, weniger und den meisten Befehlen

Erklärt! Der Unterschied zwischen grep-, egrep- und fgrep-Befehlen

Was ist der Unterschied zwischen Kill- und Killall-Befehlen?

Zip- und Unzip-Befehle unter Linux/Unix

Was ist effizienter - tar- oder zip-Komprimierung? Was ist der Unterschied zwischen tar und zip?