Você pode usar isso para compactação:
compress_file ()
{
local dir file
test -f "$1" || return 2
dir="$(readlink -f "$1")"
file="${dir##*/}"
dir="${dir%/*}"
cd "$dir"
# check whether target file exists:
# test -f "$file".zip && : whatever
echo zip "$file".zip "$file"
}
compress_file /path/to/file
seleção de arquivos para descompressão
Não estou familiarizado com zenity
. Parece que não é possível filtrar arquivos. Você pode abordar o efeito desejado criando um diretório temporário, vinculando apenas os arquivos *.zip
e executando zenity
para esse diretório. É claro que, se o usuário selecionar um diretório diferente, ele verá todos os arquivos.
zipfile_dialog ()
{
local file startdir="/home/ubuntu" tmpdirname=.zipscript.$$
cd "$startdir" || return 2
test -d "$tmpdirname" && { rm -r "$tmpdirname" || return 2; }
mkdir -p "$tmpdirname" || return 2
for file in *.zip; do
cd "$tmpdirname"
ln -s ../"$file"
cd ..
done
ls "$tmpdirname"
# call zenity here
rm -r "$tmpdirname"
}
zipfile_dialog
Uma abordagem alternativa seria usar o shell para seleção de arquivos. Isso pode ser feito com a conclusão programável se essa for uma opção para você ( complete
, compgen
).