gtar 递归解压但保留在顶层目录中

gtar 递归解压但保留在顶层目录中

我正在尝试递归解压大量包含 .tar 文件的目录,但不创建任何新的子目录。

我成功地能够使用此命令一次执行一个操作

gtar -xf *.tar --strip-components 2

但是,我必须位于子目录中才能使其正常工作,并且我想从上面的目录中集体执行此操作。

这是我的目录结构:

/top_directory
   /sub1
      tarfile1.tar
   /sub2
      tarfile1.tar
   /sub3
      tarfile1.tar
   /sub4
      tarfile1.tar

因此,我不能将它们全部移到一个目录中,然后解压它们,因为它们都被称为tarfile1.tar,因此它们需要保留在其子目录中。

但是,我不希望他们创建更多子目录;我只想要它们包含的文件。

我想要实现的目标:

/top_directory
       /sub1
          tarfile1.tar
          file1.txt
          file2.txt
          file3.txt
       /sub2
          tarfile1.tar
          file1.txt
          file2.txt
       /sub3
          tarfile1.tar
          file1.txt
          file2.txt
          file3.txt
       /sub4
          tarfile1.tar
          file1.txt
          file2.txt

我想我已经接近这个命令了:

for file in *; do gtar -xf ${file} --strip-components 2; done

但它返回此错误:gtar:这看起来不像 tar 存档

当我尝试时

for file in *.tar; do gtar -xf ${file} --strip-components 2; done

我犯了同样的错误。

如何完成解压子目录中的所有文件,同时将解压的文件保留在这些目录中?

我在Solaris11上。

相关内容