GNU/Linux >> Linux の 問題 >  >> Linux

tar を使用してフォルダー構造のないファイルを抽出するにはどうすればよいですか

@ford に基づく の答え。これにより、それが my_dirname フォルダーに抽出されます。現在存在するファイルに影響を与えることなく、空のフォルダーを適切にクリアできるようにします。

tar xzf images.tgz --transform='s/.*\///' -C my_dirname
find my_dirname -type d -empty -delete

ほぼ --transform フラグを使用して、tar だけで可能ですが、私が知る限り、残りのディレクトリを削除する方法はありません.

これにより、アーカイブ全体がフラット化されます:

tar xzf images.tgz --transform='s/.*\///'

出力は

folder1/
folder2/
folder3/
img.gif
img2.gif
img3.gif

残念ながら、別のコマンドでディレクトリを削除する必要があります。


tar のバージョンを確認してください。例:

$ tar --version

バージョンが >= の場合 tar-1.14.90 より --strip-components を使用

tar xvzf web.dirs.tar.gz -C /srv/www --strip-components 2

それ以外の場合は --strip-path を使用してください

tar xvzf web.dirs.tar.gz -C /srv/www --strip-path 2

--strip-components を使用できます tar のオプション。

 --strip-components count
         (x mode only) Remove the specified number of leading path ele-
         ments.  Pathnames with fewer elements will be silently skipped.
         Note that the pathname is edited after checking inclusion/exclu-
         sion patterns but before security checks.

あなたと似た構造の tar ファイルを作成します:

$tar -tf tarfolder.tar
tarfolder/
tarfolder/file.a
tarfolder/file.b

$ls -la file.*
ls: file.*: No such file or directory

次に、以下を実行して抽出します:

$tar -xf tarfolder.tar --strip-components 1
$ls -la file.*
-rw-r--r--  1 ericgorr  wheel  0 Jan 12 12:33 file.a
-rw-r--r--  1 ericgorr  wheel  0 Jan 12 12:33 file.b

Linux
  1. Linuxでtar.xzファイルを抽出または解凍する方法

  2. AWK を使用して 2 つのファイルをマージする方法は?

  3. filename.tar.gz ファイルを抽出する方法

  1. Linuxで.gzファイルと.tar.gzファイルを抽出する方法

  2. 特定のファイルまたはディレクトリを除いて、ファイルをtar(圧縮)する方法

  3. rm を使わずにファイルを削除するには?

  1. コマンドラインを使用してLinuxでtar.gzファイルを抽出する方法

  2. Linuxでtarコマンドを使用してファイルを圧縮および抽出する方法は?

  3. Linux で gzip と bzip2 を使用してファイルとディレクトリを圧縮および抽出する方法