gpt4 book ai didi

linux - 从压缩目标文件的存档文件列表中查明存档文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:42:51 25 4
gpt4 key购买 nike

我有这样的目录结构-

./Archive1
./Archive1/Archive2
./Archive1/Archive3

在每个目录中有许多tar 文件。举个例子(不要用名字,它们只是例子)-

Archive1
├── Archive2
│ ├── tenth.tar.gz
│ └── third.tar.gz
├── Archive3
│ ├── fourth.tar.gz
│ └── sixth.tar.gz
├── fifth.tar.gz
├── first.tar.gz
└── second.tar.gz

现在我有一个文件 file.txt,它可以驻留在任何 tar 文件中。我需要一个命令,它会给我输出作为哪个 tar 文件有我的输入文件 (file.txt) 以及 tar 文件的绝对路径。

例如,如果 test.txtsixth.tar.gz 中。输出将是 sixth.tar.gz./Archive1/Archive3/

目前我有这个命令,但是这个命令的缺点是,它列出了所有的 tar 文件 -

find . -maxdepth "3" -type f -name "*.tar.gz" -printf [%f]\\n -exec tar -tf {} \; | grep -iE "[\[]|file.txt"

最佳答案

对于每个 tar 文件,您可以运行 tar | grep,如果匹配,则打印 tar 文件的名称。一种方法是为每个 tar 文件运行一个 shell 命令。对于少量文件,如果性能不是太重要,这可能就足够了,而且相当简单。

find . -maxdepth "3" -type f -name "*.tar.gz" -exec sh -c 'tar tf {} | grep -iEq "[\[]|file.txt" && echo {}' \;

例如,如果 test.txtsixth.tar.gz 中,输出将是 ./Archive1/Archive3/sixth.tar.gz

关于linux - 从压缩目标文件的存档文件列表中查明存档文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40806670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com