先行ディレクトリパスを削除した後、GNU tarを使用してファイルをアーカイブします。

先行ディレクトリパスを削除した後、GNU tarを使用してファイルをアーカイブします。

次の構造を平らにして保管したいです。

├── a
│   └── a.txt
├── ...
│   └── ...
└── z
    └── z.txt

このtarアーカイブから:

a.txt
...
z.txt

たとえば、私はできます

  1. 一時的な位置に構造を平らにしてcp保管します。
  2. アーカイブを繰り返し作成し(tarオプション)--append--directory
  3. 抽出中の構造平坦化--strip-components

他のスマートなアイデアはありませんか?

答え1

今見つけたもの--transform

 File name transformations:

      --strip-components=NUMBER   strip NUMBER leading components from file
                             names on extraction
      --transform=EXPRESSION, --xform=EXPRESSION
                             use sed replace EXPRESSION to transform file
                             names

魅力的な:

tar -caf archive.tar.xz --transform 's|.*/\(.*\)|\1|g' $(find . -type f)

答え2

私はすべてをディレクトリに解凍し、rsyncすべてをディレクトリに入れてから再パッケージしました。

関連情報