如何在Linux中递归解压特定文件?

如何在Linux中递归解压特定文件?

我有很多焦油(.tar.bz2) 中包含多种文件类型的文件递归目录。我只想提取一种类型的文件(比方说。TXT文件)来自所有目录。我怎么做?我有这个命令提取所有文件在每个目录中:

for file in *.tar.bz2; do tar -jxf "${file}"; done

我只想提取“。TXT”文件而不是全部。

答案1

引用 GNU tar 联机帮助页:

因此,要提取名称以“.c”结尾的文件,您可以使用:

$ tar -xf foo.tar -v --wildcards '*.c'

所以对于你的情况,我会选择:

for file in *.tar.bz2; do tar -jxf "${file}" --wildcards '*.txt'; done

答案2

使用 bsdtar,您可以指定一个 glob:

for file in *.tar.bz2; do tar -jxf "$file" '*.txt'; done

使用 gnutar,您需要添加标志 --wildcards:

for file in *.tar.bz2; do tar -jxf "$file" --wildcards '*.txt'; done

相关内容