これは重複ではありません親ディレクトリなしでtarアーカイブを作成する
これにより、tar -czf archive directory
そのディレクトリがアーカイブに追加されます。directory
ディレクトリ自体の代わりにフォルダのファイルを追加したいと思います。どうすればいいですか?関連しない答えを
提案してください。cd
directory
これは表示内容と重複しません。内容を含む
ディレクトリがあります。somedir
abc
xyz
ls somedir
abc xyz
フォルダ以外のファイルを含むアーカイブを作成したいと思いますabc
。xyz
somedir
修正する:コマンドを使用するとtar -C /home/username/dir1/dir2 -cvf temp.tar yourarchive
(私の質問に対する答えは重複と呼ばれます)、
次のような結果が得られます。
私が望むのは、tar czf archive.tar.gz -C yourarchive .
私がこれを得ることです(これは私が望むものに十分近いです。):
私が望むものは次のとおりです(直接ファイル、フォルダなし)。
答え1
使用-C
:
tar czf archive -C directory .
これは作業ディレクトリとしてtar
使用し、ディレクトリ()に含まれるすべてをアーカイブするように指示します。directory
.
使用は-C
使用とほぼ同じですcd
。上記は、archive
起動時に現在のディレクトリに基づいて解釈され、次に解釈される前に作業ディレクトリをに変更します。tar
tar
directory
.
tar -C
どれだけ広くサポートされているかはわかりませんが、すべてのLinuxディストリビューションがそれをサポートする必要があります。
答え2
努力する
tar cvf archive.tar -C somedir $(ls somedir)
どこ
cvf
〜する氏言い換えるVエルボス(ly)FエリーArchive.tar
-C somedir
tarに使用するように指示します。somedir
$(ls somedir )
ディレクトリ内のファイルを一覧表示し、$( )
結果を引数として渡します。
編集する:
コメントで指摘したように、ドットファイルを一覧表示するには(ls -aのls -A
代わりに)を使用します。
答え3
あなたはこれを行うことができます人数(1)、これはtarのposix以降のバージョンでしたが、決して人気を集めませんでした。 tarファイルに書き込むことができ、必要なファイル名変換を実行できます。
pax -wzf archive -s '|directory/\?||' directory
これは次のように分類できます。
-w
アーカイブの書き込み(-c
tarと同じ)-z
圧縮アーカイブ(tarと同じ)-f archive
ファイルへの書き込みarchive
(tarと同じ)-s '|directory/\?||'
アーカイブのファイル名を変更します。文字列をオプションのdirectory
空/
の文字列に置き換えます。/
ディレクトリ自体はaで終わりませんが、/
他のすべてのメンバーは終了するため、オプションが必要です/
。この文字列^
は最初の項目(たとえばsed(1)
)のみを置き換え、すべてのファイルは次に終わるため、文字列()の先頭に固定する必要はありません。directory/\?
明確にするために、以下を追加できます。
-x ustar
POSIX tarファイルの作成
しかし、これがデフォルト設定です。
LinuxまたはBSDパッケージリポジトリでpaxを見つけることができるはずです。 GNU paxがあるようですが、その状態がわかりません。 Debian には pax の BSD バージョンがあるようです。