View difference between Paste ID: xT4ySeku and 6rgRUgVL
SHOW: | | - or go back to the newest paste.
1
#!/bin/bash
2-
# dcompact - Descompactador de arquivos pelo Nautilus
2+
# yXtractor - Descompactador de arquivos pelo Nautilus com Yad
3
# Descompacta o conteúdo do arquivo em um subdiretório
4
#
5
# Autor: Alysson Gonçalves de Azevedo
6
#
7
# Para funcionar, salve este arquivo com um nome qualquer no diretório:
8
#   "~/.gnome2/nautilus-scripts/" 
9
# O nome que colocar no arquivo será Exibido no menu de contexto do Nautilus.
10
#
11-
OLDIFS=${IFS}
11+
12
13
IFS="
14
"
15-
for SELECTED in `find ${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS} -type f -maxdepth 1 -regex ".*\(zip\|rar\|7z\|tar\|gz\|bz2\|tar.gz\|tar.bz2\|lzma\)$"`
15+
16-
do
16+
#NAUTILUS_SCRIPT_SELECTED_FILE_PATHS é a lista de todos os arquivos selecionados, por isso é necessário tratar eles com um for
17-
    7z x -y "${SELECTED}"
17+
for SELECTED in ${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS}; do
18-
done
18+
    #Muda o dir corrente para o dir passado por parametro e então extrai os arquivos la
19-
IFS=${OLDIFS}
19+
    [ -d ${SELECTED} ] && cd ${SELECTED} || cd "`dirname "${SELECTED}"`"
20
    
21
    #Lista os arquivos a serem descompactados, se for um arquivo, retorna ele mesmo, se for uma pasta, retorna os arquivos dentro dela
22
    FILES=`ls ${SELECTED} | grep -E '\.(zip|rar|7z|7z\.001)$' | grep -Ev '\.part([1-9][[:digit:]]|[[:digit:]]*(0|[2-9]))\.rar$'`
23
    #O segundo grep exclui arquivos.partN.rar, onde N não seja 1,01,001 e etc.
24
    
25
    #Extrai cada arquivo da lista
26
    for NOME in ${FILES}; do
27
        echo "#${NOME##/*/}" #Mostra o nome do arquivo no display de progresso do yad 
28
        7z x -y "${NOME}"
29
    done
30
done | \
31
yad --title="yXtractor" --text="Extraindo arquivos..." --progress --pulsate --no-buttons --auto-close --width=300 #--undecorated