答案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 中的文件名中也不要使用空格。
- 只是:没有空格!