这里我有test.tar.gz文件,它的结构如下:
folder/
folder/folder1
folder/folder1/aa
folder/folder1/bb
folder/folder2
folder/folder2/cc
Run Code Online (Sandbox Code Playgroud)
有没有办法找到第一级文件夹的名称?
对于简单的情况,那么:
tar tf archive.tar | head -1
Run Code Online (Sandbox Code Playgroud)
......但是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/
Run Code Online (Sandbox Code Playgroud)
另外,请注意上面的例子,最后的条目:有子文件夹但不是根文件夹.
在这种情况下,您可能会提取各种"根":
sh$ tar tf f.tar | sed -n '/^[^/]*\/$/p'
folder/
other/
Run Code Online (Sandbox Code Playgroud)
如果您还需要"无根"文件,则更复杂:
sh$ $ tar tf f.tar | sed -n '/^.*\/$/p' | sort | cut -d '/' -f 1 | uniq
folder
other
yet
Run Code Online (Sandbox Code Playgroud)
该sort不是在我的例子绝对必要的,但它可以帮助如果你有一个增量存档.
| 归档时间: |
|
| 查看次数: |
224 次 |
| 最近记录: |