当前位置: 首页 > 知识库问答 >
问题:

Bash提取焦油。gz文件

娄飞鸾
2023-03-14

我的 tar 文件位于以下位置:

/volume1/@appstore/SynoDSApps/archiv/DE/2018_08_18__Lysto BackUp.tar.gz

使用 tar 命令:

tar -tf "/volume1/@appstore/SynoDSApps/archiv/DE/2018_08_18__Lysto BackUp.tar.gz"

命令显示我:

/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/
/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/exit_codes/
/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/exit_codes/code_FUNC
/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/exit_codes/code_SCRI
/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/login/
/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/login/check_appprivilege.php
/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/login/check_login.php
/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/login/privilege.php
/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/scripte/
/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/scripte/Lysto BackUp/
/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/scripte/Lysto BackUp/sys
/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/webapp/scripte/Lysto BackUp/sys_func
/volume1/02_public/3rd_Party_Apps/SPK_SCRIPTS/SynoDSApps/SSH_ERROR

我的计划或更好的愿望是这样处理:

IFS=$'\n'
for PATHS in $(tar -tPf "/volume1/@appstore/SynoDSApps/archiv/DE/2018_08_18__Lysto BackUp.tar.gz")
do
    SED=$(echo "$PATHS" | sed 's/.*\///')
    if [[ -n "$SED" ]]
    then
        tar -C "${target_archiv}" -xvf "/volume1/@appstore/SynoDSApps/archiv/DE/2018_08_18__Lysto BackUp.tar.gz" "$PATHS"
        #echo JA
        echo "$PATHS"
    fi
done
unset IFS

我只想要一个tar文件并将其存储到不同的目录……但是这个带有-C的命令不起作用…它提取tar的所有文件……

我的问题是,是否可以只提取一个Tar文件,而不将cd提取到目录中??另一个问题:是否有可能只提取tar文件而不提取文件夹这可能是更好的方法,但我不知道如何。。。?

不,没有路径我就不能保存文件,我需要它们...所以这对我来说是不可能的...

希望在这里得到帮助:)

共有1个答案

上官波鸿
2023-03-14

如果您的最终目标是提取没有完整路径的文件,则可以使用类似SED的表达式在提取文件时重命名文件,方法是使用<code>--xform

tar -C "${target_archiv}" -xvf "/volume1/@appstore/SynoDSApps/archiv/DE/2018_08_18__Lysto BackUp.tar.gz" --xform='s,^.*/,,'

's,^.*/,,' 表达式要求从文件名(^)开始替换(< code>s),捕获所有内容(< code >)。*)并在最后一个斜杠(< code>/)处停止,然后用nothing替换它。换句话说,它从文件名中删除了目录结构。

如果要删除已解压缩的空文件夹,可以在解压缩后调用以下命令:

find "${target_archiv}" -mindepth 1 -maxdepth 1 -type d -exec rmdir {} \;

请记住,它将删除“${target_archiv}”的所有(空)子文件夹,甚至是在提取tarball之前已经存在的子文件夹。但是,由于<code>rmdir</code>不会删除包含文件的目录,因此它对您拥有的子目录基本无害。

 类似资料:
  • 我有一个.tar文件,其中包含文件夹中的许多.gz文件。这些 gz 文件中的每一个都包含一个.txt文件。与此问题相关的其他堆栈溢出问题旨在提取文件。 我试图反复阅读每一个的内容。txt文件,因为。焦油很大。 首先我阅读了. tar文件的内容: 或在Unix中: 然后我尝试使用tarfile提取文件方法,但我得到一个错误:“模块'tarfile'没有属性'提取文件'”。此外,我甚至不确定这是正确的

  • 我已将文本文件“FilenameKeyword.txt”文件放在E:/Test文件夹中,在我的perl脚本中,我正在尝试遍历该文件夹,并且我正在尝试找到一个带有文件名的文件,其中包含字符串“关键字”,后来我在我的脚本中打印了该文件的内容。现在我希望对放置在压缩的tar文件中的文件做同样的事情。 我试图从中提取详细信息的假设文件:E:\test.tar.gz 想知道在perl中是否有可能搜索和读取文

  • 在PHP中,我使用Phar对象创建了tar文件,但它不保存文件信息,如修改的时间、权限等。 有没有办法将此类信息保存在创建的tar文件中? 我试了buildFromDirectory(),addFile(),都没用。

  • 假设我有一个名为. csvABC_DE_FGHI_10_JK_LMN文件。我想从文件名(即10)中提取ID,借助ID位置和文件名分隔符。我有以下两个输入 此处ID可以是数字或字母数字。那么,如何在上述两个输入的帮助下从上述文件中提取10。如何在bash中实现这一点?

  • 有没有一种方法可以读取tar文件格式的文件的时间戳,以便为未tarred文件设置相同的时间。 例如:Tar文件中有多个文件,我想读取一个文件上次修改的时间戳。 请找到下面使用的代码。 我正在使用apache commons:commons-compress-1.2.jar

  • 我试图在Perl6中逐行读取一个巨大的gz文件。 我正在尝试做这样的事情 但是这会给出一个错误,我有一个格式不正确的UTF-8。我看不到如何从帮助页面读取gzip材料https://docs.perl6.org/language/unicode#UTF8-C8或https://docs.perl6.org/language/io 我想完成和在Perl5中一样的事情:http://blog-en .