Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I extract files without folder structure using tar

Tags:

linux

unix

tar

I have a tar.gz-file with the following structure:

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

I want to extract the image files without the folder hierarchy so the extracted result looks like:

/img.gif /img2.gif /img3.gif 

I need to do this with a combination of Unix and PHP. Here is what I have so far, it works to extract them to the specified directory but keeps the folder hierarchy:

exec('gtar --keep-newer-files -xzf images.tgz -C /home/user/public_html/images/',$ret); 
like image 538
Ben Jackson Avatar asked Jan 12 '13 17:01

Ben Jackson


1 Answers

You can use the --strip-components option of 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. 

I create a tar file with a similar structure to yours:

$tar -tf tarfolder.tar tarfolder/ tarfolder/file.a tarfolder/file.b  $ls -la file.* ls: file.*: No such file or directory 

Then extracted by doing:

$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 
like image 70
ericg Avatar answered Oct 20 '22 02:10

ericg