gpt4 book ai didi

linux - 如何在不创建子目录的情况下从 tar 存档中提取文件?

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

我有一个压缩的 tar 存档,我想从存档深处提取一个文件到当前工作目录。

有没有比 tar 更好的东西,或者没有目录组件的解压方法?

我现在正在做这样的事情:

tar xfvz $file -C $destination $folder"/"$file
cd $destination"/"$folder
mv $file ../$file
rm -r $folder

但我有时会删除错误的$folder

例如,我的存档是:mytar.tar.gz。我在里面有 myfolder/mysecondfolder/hello.txt

我想将 myfolder/mysecondfolder/hello.txt 提取为当前目录中的 hello.txt

最佳答案

如果 GNU tar 可用,您可以使用 --strip-components 参数:

#!/bin/bash
file_to_extract=myfolder/mysecondfolder/hello.txt
depth=$(awk -F/ '{print NF-1}' <<< "$file_to_extract")
tar zxvf mytar.tar.gz --strip-components="$depth" "$file_to_extract"

来自 man tar:

--strip-components=NUMBER
strip NUMBER leading components from file names on extraction

来源:https://www.linuxquestions.org/questions/linux-newbie-8/extracting-tar-gz-files-in-current-directory-689243/#postmenu_3368879


一个较短的解决方案是使用 --transform 选项,正如 Toby Speight 所建议的:

tar zxvf mytar.tar.gz --transform='s,.*/,,' myfolder/mysecondfolder/hello.txt

关于linux - 如何在不创建子目录的情况下从 tar 存档中提取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41139315/

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