Tarリモートディレクトリ、ファイルの前に./がありません。

Tarリモートディレクトリ、ファイルの前に./がありません。

データを実行して収集し、このデータを別のスクリプトに供給するいくつかのスクリプトがあります。したがって、チェーン全体が自動化されます。自動化プロセスのある時点では、すべてのデータファイルがパッケージ化され、処理のために転送されます。私が使用するコマンドは次のとおりです。

tar -zchvf "$target_dir" -C "$data_dir" .

ここで target_dir は私の tarball の位置、 data_dir は私のデータの位置です。

今すべてがうまくいきますが、私のTarbolのファイルは次のようになります。

./file1
./file2
 <etc>

後処理スクリプトは、これらのファイルの前の./のために混乱します。次のようになると予想されます。

file1
file2
<etc>

マニュアルページを見てみましたが、tarプロセスから先行する./を削除することについて本当に印象的ではありません。私が考えていることの1つは、スクリプトを次のように変更することです。

cd $data_dir; tar -zchvf "$target" *; cd -

しかし、これは私にとって非常に間違った感じで、私は他の愚かなものを見逃していると確信しています。

参考のためにbash v3.2.5を使用しています。

ベストアンサー1

gnu tarを使用している場合は、tarを入力しながらファイル名を編集できます。

$ mkdir -p a/b
$ cd a
$ tar cf - --transform='s:^./::' . | tar tvf - 
drwxr-xr-x        0 2018-07-24 18:18 ./
drwxr-xr-x        0 2018-07-24 18:18 b/

おすすめ記事