如何在各个子文件夹中找到所有 tar 文件,然后将它们解压缩到找到它们的同一文件夹中?

How to find all tar files in various sub-folders, then extract them in the same folder they were found?

我有很多子文件夹,只有一些包含 tar 文件。即:

folder1/
folder2/this-is-a.tar
folder3/
folder4/this-is-another.tar

我可以通过 ls */*.tar 找到哪些目录有 tar。

我想要实现的是以某种方式找到所有 .tar 文件,然后将它们解压缩到找到它们的同一目录中,然后删除 .tars.

我已经试过 ls */*.tar | xargs -n1 tar xvf 但它提取的是我所在目录中的 tar,而不是 tar 所在的目录。

如有任何帮助,我们将不胜感激。

for file in */*.tar; do
    (cd `dirname $file`; tar xvf `basename $file`)
    unlink $file
done
for i in */*.tar ; do pushd `dirname $i` ; tar xf `basename $i` && rm `basename $i` ; popd ; done

编辑:这可能是更好的方法:

find . -type f -iname "*.tar" -print0 -execdir tar xf {} \; -delete