如何在 Linux 下获取 7z 档案的内容列表?

如何在 Linux 下获取 7z 档案的内容列表?

这个答案这个建议使用 p7zip 与 Linux 下的 7zip 档案库配合使用。我可以看到压缩和解压缩选项。但是如何在不解压缩档案库的情况下获取其内容列表?

答案1

您需要7z来自该p7zip-full包的可执行文件。

7z l archive.7z

列出内容

来源:7z --help

答案2

p7zip该包的可执行文件p7zip没有此功能。

如果您安装了p7zip-full,您可以使用可执行文件7z

7z -h向您展示基本语法。

答案3

我的 bash 脚本可以帮助你......

#!/bin/bash

TITLE="7z - ARCHIVE INFO"
echo -en "\033]0;$TITLE\a" # Window Title

clear

echo "$TITLE"

echo

echo "Place this script in a dir with 7z files..."

echo

echo "Name of specific 7z-archive or of all 7z-archives?"

read -e -i "*.7z" -p ""  ZNAME

echo

echo "Password (EMPTY/ENTER = NO PW)?"

read -e -p "" PW

pw(){
if [[ $PW == "" ]]  
then
echo ""
else
echo "-p$PW"
fi
}

echo

echo "Just a moment..."

# CODE
for f in ${ZNAME}; do echo "${f}:"; echo -e "$(7z l -ba $(pw) "${f}")\n"; done > 0000_7z_ARCHIVEINFO.txt

# l = list contents of archive
# -ba = short version of archive.

echo

echo "Achive info has been written to file 0000_7z_ARCHIVEINFO.txt" 

echo

read

它应该在文件 0000_7z_ARCHIVEINFO.txt 中产生类似这样的结果:

file1.7z:
data data data data data file1.pdf
data data data data data file1.txt

file2.7z:
data data data data data file2.pdf
data data data data data file2.txt

它只是向您显示每个 7z 的名称以及其中所有文件的名称。可用于单个 7z 档案或多个 7z 档案(在同一个目录中)。您可以通过将“7z -l -ba”命令连接到 cut 命令来进一步修剪它,并使用该命令剪切前 5 个“数据”字段(日期、时间等)(或仅保留第 6 个字段,即纯文件名)。或者,使用其他方法。使其递归等。如果您的文件受密码保护(如果有多个文件,则所有文件都使用相同的密码),则密码功能。或者如果不需要密码,则将其留空。在终端中插入密码后,可能会刷新您的历史记录 ;-)

抱歉写了这么长的内容,但也许它可以提供一些想法......

附言:

  • 如果让我的脚本名称以“0000”开头,例如“0000_7z_ARCHIVEINFO.sh”,它将位于目录中其他文件的顶部。
  • 请注意 7z 会翻转文件名中的空格!您可以在顶部的某个位置添加此代码'$TITLE',以便首先自动将所有文件名中的所有空格替换为下划线(为什么不呢,非 7z 的也是如此):

查找 . -depth -name "*" -execdir rename 's/[[:space:]]/_/g' {} ;

  • 7z 中的文件名中也不要使用空格。
  • 只是:没有空格!

相关内容