GNU/Linux >> Linux の 問題 >  >> Linux

ワイルドカード ファイル パターンを指定した tar -C

問題は、*.xml が tar ではなくシェルによって解釈されることです。したがって、見つかった xml ファイル (存在する場合) は、tar コマンドを実行したディレクトリにあります。

必要なファイルを選択してからそれらを tar するには、複数段階の操作 (おそらくパイプを含む) を使用する必要があります。

最も簡単な方法は cd にすることです ファイルがあるディレクトリに:

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

動作するはずです。

ブラケットはコマンドをグループ化するため、コマンドが終了しても元のディレクトリにとどまります。 &&は tar を意味します 最初の cd の場合にのみ実行されます 成功しました。


あなたの試みの1つで:

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

* 文字は実際に tar に渡されます。ただし、問題は、tar がアーカイブのメンバーの名前のワイルドカード マッチングしかサポートしていないことです。そのため、アーカイブからメンバーを抽出または一覧表示する場合はワイルドカードを使用できますが、アーカイブを作成する場合はワイルドカードを使用できません。

そのような状況では、私は見つけることに頼ることがよくあります(すでに述べたように)。 GNU find がある場合は、-printf オプションを使用して相対パスのみを表示する便利なオプションがあります:

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

受け入れられた答えは、ファイルが単一のディレクトリから取得されることを前提としています。複数の -C を使用する場合 次のコマンドは、シェルにファイル名を展開させ、それを tar に渡します。 .

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

Linux
  1. 改行をNulに置き換えますか?

  2. 1 つのコマンドで .tar.gz ファイルを開く

  3. nftw での警告

  1. Unix で .tgz ファイルを tar でパスワード保護するにはどうすればよいですか?

  2. 「tar」コマンドと「find」コマンドを組み合わせる方法

  3. 複数のディレクトリとファイルの場所で tar を作成する

  1. lsの使用を開始する

  2. 特定の名前パターンのフォルダの内容からZipファイルを作成するにはどうすればよいですか?

  3. ETAを使用したLinuxファイルのコピー?