新しいtarアーカイブにいくつかのフォルダを(再帰的に)追加したいと思います。すべてのフォルダは、生成されたアーカイブのルートレベルに配置する必要があります。親フォルダなしで、cd
そのディレクトリに最初に入り、段階的に追加せずにすべてのフォルダを追加する方法はありますか?
次のディレクトリ構造を考えてみましょう。
.
├── bar
│ ├── bar-file
│ └── barsub
│ └── barsub-file
└── foo
├── foo-file
└── foosub
└── foosub-file
追加したいバーそしてトミコtar アーカイブへ。
# add folders with different parents
# could be e.g. /some/foo/foosub and /other/bar as well
$ tar cvf archive.tar bar foo/foosub
a bar
a bar/bar-file
a bar/barsub
a bar/barsub/barsub-file
a foo/foosub
a foo/foosub/foosub-file
しかし、私が望むもの
.
├── bar
│ ├── bar-file
│ └── barsub
│ └── barsub-file
└── foosub
└── foosub-file
そのようなものを簡単に作る方法はありますか?平らなTarファイル?
答え1
GNUまたはFreeBSD tarを使用すると、アーカイブにファイルを追加または抽出するときにファイル名を変換できます。
tar czf foo.tgz --transform='!^bar/!!' bar/ foo
移植可能にも同じことができます。公園。
pax -w -pe -s'!^bar/!!' foo bar/
答え2
tar cvf archive.tar bar -C /path/to/foo/ .