異なるソースからファイルをパッケージ化するために共通の親フォルダを指定する方法

異なるソースからファイルをパッケージ化するために共通の親フォルダを指定する方法

現在実行中のコマンドは次のとおりです。

tar --directory=/Users/joe/images -czvf images.tgz dir1/image1.jpg dir2/image2.jpg

ご覧のとおり、これは/Users/joe/imagesルートディレクトリを使用し、そのルートの下にある他のディレクトリのイメージを含みます。

ただし、tar内の共通の親項目の下にこれらの画像を含めることができるはずです。 tarファイルを開くと、次のディレクトリ構造が表示されます。

  • 共通/image1.jpg
  • 共通/image2.jpg

ファイルを配置する必要がある「親」ディレクトリを指定できるこのコマンドを実行するフラグまたは方法はありますか?

ベストアンサー1

--directoryGNUまたは最新のBSD tarを使用することをお勧めします。

GNUの使用tar:

tar --directory=/Users/joe/images --transform='s|[^/]*|common|' \
  -czvf images.tgz dir1/image1.jpg dir2/image2.jpg

BSD tarの使用:

tar --directory=/Users/joe/images -s'|[^/]*|common|' \
  -czvf images.tgz dir1/image1.jpg dir2/image2.jpg

アイデアは同じです。ブートパスコンポーネントをcommon

この交換は、その中にあるシンボリックリンクターゲットでも機能します(S交換フラグを使用して無効にすることができます)。

おすすめ記事