仅解析目录结构

时间:2017-04-07 22:39:36

标签: bash unix tar

是否可以在不提取文件的情况下从tar-archive中提取目录结构?

我尝试使用

tar tvpf archive.tar | nawk '/.*\/$/{ print $NF }' | tar -xpf archive.tar --no-recursion -T -

所有目录都显示为尾随/。因此,对于nawk,我只打印出这些/在行尾的这些/。问题是,tar -T - 不接受按行分隔的路径名。其他空格分隔文件名,因此它不适用于包含空格的pathes。有什么想法吗?

这不是解决所有问题的解决方案,然后删除文件,然后将目录tar目标复制到目标,尽管可能。我想创建一个没有临时文件的解决方案。 bash解决方案会有所帮助。

2 个答案:

答案 0 :(得分:1)

当然,我刚才发现了类似的答案。

altsumMAX1MAX2 <- sapply(1:nrow(df), function(i){
    sum(sort(df[i,3:7], decreasing=T)[1:2])
    })

第一部分在tar中查看,管道输出到grep只捕获文件名,这些文件被发送到临时文件。然后提取tar,排除排除的文件,最后删除临时文件。

编辑:添加sed以删除路径中的转义空间。

<强>更新

正如评论中所建议的那样,没有临时文件和进程替换也是可行的。干杯沃尔特A.更清洁。

tar -tf file.tar | grep -v '/$' | sed 's/ /\\ /g' > excluded_files ; tar xfX file.tar excluded_files ; rm -f excluded_files

答案 1 :(得分:-1)

如果您可以使用一些C代码,可以使用libarchive/examples/untar.c并添加一张支票。

if (archive_entry_filetype(entry) != AE_IFDIR) continue;