如何模仿 Windows 中的 7zip“提取到“。””上下文菜单选项

如何模仿 Windows 中的 7zip“提取到“。””上下文菜单选项

我对使用终端还很陌生,想知道如何将一个装满 .zip 文件的文件夹放入与其提取的 .zip 文件同名的子文件夹中。

到目前为止,我认为unzip '*.zip' -d可以将所有 .zip 文件提取到一个目录中,但我不确定如何为-d每个 .zip 文件指向/创建目标文件夹。

或者,Nautilus Action Config Tool 似乎可以模仿 7zip Extract To 命令,但这似乎有点令人生畏。

答案1

使用Nautilus Action Config Tool选项并调用我的script zippy.sh

#!/bin/bash
# Unzipping and organizing files from nautilus
m=0 # counter
while [ -n "$1" ] && [ -f "$1" ]
do
    if [[ "$1" =~ \.zip$ ]]
    then
        dir="$1"
        dir=${dir%.*}
        unzip "$1" -d "$dir"
        m=$(($m + 1))
        shift
    fi
done
zenity --info --text="Operations finished and "$m" zip files unzipped"
exit 0
  1. 将脚本放在这里:

    ~/.local/share/nautilus/scripts/
    
  2. 使其可执行chmod +x ~/.local/share/nautilus/scripts/zippy.sh

解释:

  1. -n-f分别检查文件号是否不为零和是否为文件

  2. =~ \.zip$确保它是一个 zip 文件

  3. ${dir%.*}截掉zip文件名的一部分

  4. m=$(($m + 1))计算已处理的 zip 文件数量。

  5. shift翻阅文件

  6. zenity显示消息框以指示操作结束

答案2

我编辑了一个我找到的脚本,将文件名转换为文件夹名并提取到创建的文件夹中。

修订:在您的目录中创建一个文件:

#!/bin/bash
find . -type f ! -name "*exto*" | while read file;
do
    f=$(basename "$file")
    f1=${f%.zip}
    mkdir "$f1"
    unzip "$f" -d "$f1" 
done

在终端:

chmod +x exto
./exto

答案3

您也可以直接下载适用于 Linux 的 7Zip 版本。https://sourceforge.net/projects/p7zip/files/ 它被称为 p7zip

https://www.ibm.com/developerworks/community/blogs/6e6f6d1b-95c3-46df-8a26-b7efd8ee4b57/entry/how_to_use_7zip_on_linux_command_line144?lang=en 这也提供了非常详细的安装和使用指南

相关内容