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

tar -C mit einem Wildcard-Dateimuster

Das Problem ist, dass die *.xml von der Shell interpretiert wird, nicht von tar. Daher befinden sich die gefundenen XML-Dateien (falls vorhanden) in dem Verzeichnis, in dem Sie den tar-Befehl ausgeführt haben.

Sie müssten eine mehrstufige Operation (möglicherweise mit Pipes) verwenden, um die gewünschten Dateien auszuwählen und sie dann zu tarn.

Der einfachste Weg wäre einfach zu cd in das Verzeichnis, in dem sich die Dateien befinden:

$ (cd /path/to/file && tar -cf /path/to/example.tar *.xml)

sollte funktionieren.

Die Klammern gruppieren die Befehle zusammen, sodass Sie sich nach Beendigung immer noch in Ihrem ursprünglichen Verzeichnis befinden. Das &&bedeutet die tar wird nur ausgeführt, wenn der anfängliche cd war erfolgreich.


In einem Ihrer Versuche:

tar -cf example.tar -C /path/to/file "*.xml"

das *-Zeichen wird tatsächlich an tar übergeben. Das Problem ist jedoch, dass tar nur Wildcard-Matching für die Namen von Mitgliedern eines Archivs unterstützt. Während Sie beim Extrahieren oder Auflisten von Mitgliedern aus einem Archiv Platzhalter verwenden können, können Sie beim Erstellen eines Archivs keine Platzhalter verwenden.

In solchen Situationen greife ich oft zu (wie du schon erwähnt hast). Wenn Sie GNU find haben, hat es die nette Option, nur den relativen Pfad auszugeben, indem Sie die Option -printf verwenden:

find '/path/to/file' -maxdepth 1 -name '*.xml' -printf '%P\0' \
| tar --null -C '/path/to/file' --files-from=- -cf 'example.tar'

Die akzeptierte Antwort geht davon aus, dass die Dateien aus einem einzigen Verzeichnis stammen. Wenn Sie mehrere -C verwenden Optionen, dann benötigen Sie einen allgemeineren Ansatz. Der folgende Befehl lässt die Shell die Dateinamen erweitern, die dann an tar übergeben werden .

tar -cf example.tar -C /path/to/file $(cd /path/to/file ; echo *.xml)

Linux
  1. Erste Schritte mit ls

  2. Newline durch Nul ersetzen?

  3. Wie erstelle ich eine Zip-Datei aus dem Inhalt eines Ordners mit einem bestimmten Namensmuster?

  4. Wie schütze ich eine .tgz-Datei mit einem Passwort unter Unix?

  5. Ist mv mit Wildcard noch atomar

So extrahieren (entpacken) Sie die tar.xz-Datei

So erstellen Sie eine Tar-Gz-Datei

Linux-WC-Befehl mit Beispielen

Digitale Signaturen mit GnuPG

14 grundlegende Tar-Befehle in Linux mit Beispielen für Neulinge

Extrahieren Sie die tar.gz-Datei unter Linux