我有很多焦油(.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