gpt4 book ai didi

linux - bash 在 tar 球中寻找文件名

转载 作者:太空狗 更新时间:2023-10-29 11:24:43 25 4
gpt4 key购买 nike

我这里有 test.tar.gz 文件,它的结构如下:

folder/
folder/folder1
folder/folder1/aa
folder/folder1/bb
folder/folder2
folder/folder2/cc

有没有办法找到一级文件夹的名字?

最佳答案

对于简单的情况,怎么样:

tar tf archive.tar | head -1

... 但是 tar 归档文件不是必需的“单根”:

sh$ mkdir -p folder/folder1
sh$ mkdir -p folder/folder2
sh$ touch folder/folder1/{aa,bb}
sh$ touch folder/folder2/cc
sh$ mkdir -p other/folder3
sh$ touch other/folder3/dd
sh$ mkdir -p yet/an/other
sh$ tar cvf f.tar folder other yet/an
folder/
folder/folder1/
folder/folder1/aa
folder/folder1/bb
folder/folder2/
folder/folder2/cc
other/
other/folder3/
other/folder3/dd
yet/an/
yet/an/other/

此外,请注意在上面的示例中,最后一个条目:有子文件夹,但没有根文件夹。

在这种情况下,您可能会提取各种“根”:

sh$ tar tf f.tar | sed -n '/^[^/]*\/$/p'
folder/
other/

如果你也需要“无根”文件,这就更复杂了:

sh$ $ tar tf f.tar | sed -n '/^.*\/$/p' | sort | cut -d '/' -f 1 | uniq
folder
other
yet

sort 在我的示例中不是绝对必要的,但如果您有一个增量存档,它会有所帮助。

关于linux - bash 在 tar 球中寻找文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24916930/

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