2016-05-15 7 views
1

スクリプトには、アーカイブにパッケージングする相対ファイルパスのリストがあります。私が使用している場合:タールでパスに関連するファイルをパックする

path1/file1 
path1/path2/file2 
path1/file3 
... 

しかし、私はファイルがパック、実行時に決定された経路../path1に対する相対たい:

# list of some relative file paths determined at runtime 
FILES="../path1/file1 ../path1/path2/file2 ../path1/file3 ... more files ..." 

# pack files 
tar -cavf target.tar.gz $FILES 

アーカイブ構造がある

file1 
path2/file2 
file3 
... 

を私はしたくありません引数を-Cにすると、パスを変更する必要があるためです。 シンプルなソリューションはありますか?

答えて

0

私は自分自身に答える。唯一の解決策は、realpathで相対パスを編集しているようだ:

realpath --relative-to=../path1 ../path1/file1 ../path1/path2/file2 ../path1/file3 \ 
    | tar -acvf target.tar.gz -C ../path1 -T - 
0

はたぶんあなたの簡略化した例の質問から欠落している詳細がありますが、それはちょうど最初にその相対的なフォルダに移動するのに十分ではないでしょうか?

cd ../path1 
FILES="file1 path2/file2 file3" 
tar -cavf target.tar.gz $FILES 
+1

@Cyrus OPは '-C' –

+0

パスが入力され、あなたのソリューションを使用するスクリプトによって何らかの方法で変更する必要が使用することを望んでいないについて何かを言いました。 – R1tschY

+0

@ R1tschYあなたのご意見は本当に混乱しています。私は上記のスクリプトをテストしましたが、修正する必要はありません。変数の中にパスを含めるように質問を編集したことに気付きました。私は、パスのリストをスペースで区切っているので、パスのリストを引用する必要があることが問題だと思います。 –

関連する問題