是否可以在不提取文件的情况下从tar-archive中提取目录结构?
我尝试使用
tar tvpf archive.tar | nawk '/.*\/$/{ print $NF }' | tar -xpf archive.tar --no-recursion -T -
所有目录都显示为尾随/。因此,对于nawk,我只打印出这些/在行尾的这些/。问题是,tar -T - 不接受按行分隔的路径名。其他空格分隔文件名,因此它不适用于包含空格的pathes。有什么想法吗?
这不是解决所有问题的解决方案,然后删除文件,然后将目录tar目标复制到目标,尽管可能。我想创建一个没有临时文件的解决方案。 bash解决方案会有所帮助。
答案 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;