LINUX.ORG.RU

История изменений

Исправление vodz, (текущая версия) :

legolegs, На самом деле нет никаких сложностей и для кавычек в имени:

#!/bin/bash

arch=0
del=0
use_ard=0

usage() {
	echo "Usage $0 [-a[-d]]" 2>&1
	exit 2
}

while getopts ":adX" o; do
    case "$o" in
    a) arch=1
       ;;
    d) del=1
       ;;
    X) use_ard=1;;
    *) usage;;
    esac
done
shift $((OPTIND-1))

ad() {
	for i; do
		if [[ $arch -eq 0 ]]; then
			a=
			read -p "Заархивировать каталог $i (y/n)? [y]: " a
			case "${a:=y}" in
			Y|[yY][eE][sS]) a=y ;;
			esac
		else
			a=y
		fi
		if [[ $a == y ]]; then
			echo zip -r `date "+%F"`.zip "$i"
			if [[ $del -eq 0 ]]; then
				a=
				read -p "Удалить каталог $i (y/n)? [n]: " a
				case "${a:=n}" in
				Y|[yY][eE][sS]) a=y ;;
				esac
			else
				a=y
			fi
			[[ $a == y ]] && echo rm -rf "$i"
		fi
	done
}

if [[ $use_ard -eq 1 ]]; then
	ad "$@"
else
	[[ arch -eq 1 ]] && a1=-a || a1=
	[[ del -eq 1 ]] && a2=-d || a2=
	find / -mindepth 1 -maxdepth 1 -type d -exec "$0" $a1 $a2 -X {} \;
fi

Исправление vodz, :

legolegs, На самом деле нет никаких сложностей и для кавычек в имени:

#!/bin/bash

arch=0
del=0
use_ard=0

usage() {
	echo "Usage $0 [-a[-d]]" 2>&1
	exit 2
}

while getopts ":adX" o; do
    case "$o" in
    a) arch=1
       ;;
    d) del=1
       ;;
    X) use_ard=1;;
    *) usage;;
    esac
done
shift $((OPTIND-1))

ad() {
	for i; do
		if [[ $arch -eq 0 ]]; then
			a=
			read -p "Заархивировать каталог $i (y/n)? [y]: " a
			case "${a:=y}" in
			Y|[yY][eE][sS]) a=y ;;
			esac
		else
			a=y
		fi
		if [[ $a == y ]]; then
			echo zip -r `date "+%F"`.zip "$i"
			if [[ $del -eq 0 ]]; then
				a=
				read -p "Удалить каталог $i (y/n)? [n]: " a
				case "${a:=n}" in
				Y|[yY][eE][sS]) a=y ;;
				esac
			else
				a=y
			fi
			[[ $a == y ]] && echo rm -rf "$i"
		fi
	done
}

if [[ $use_ard -eq 1 ]]; then
	ad "$@"
else
	[[ arch -eq 1 ]] && a1=-a || a1=
	[[ del -eq 1 ]] && a2=-d || a2=
	find / -mindepth 1 -maxdepth 1 -type d -exec $0 $a1 $a2 -X {} \;
fi

Исходная версия vodz, :

legolegsНа самом деле нет никаких сложностей и для кавычек в имени:

#!/bin/bash

arch=0
del=0
use_ard=0

usage() {
	echo "Usage $0 [-a[-d]]" 2>&1
	exit 2
}

while getopts ":adX" o; do
    case "$o" in
    a) arch=1
       ;;
    d) del=1
       ;;
    X) use_ard=1;;
    *) usage;;
    esac
done
shift $((OPTIND-1))

ad() {
	for i; do
		if [[ $arch -eq 0 ]]; then
			a=
			read -p "Заархивировать каталог $i (y/n)? [y]: " a
			case "${a:=y}" in
			Y|[yY][eE][sS]) a=y ;;
			esac
		else
			a=y
		fi
		if [[ $a == y ]]; then
			echo zip -r `date "+%F"`.zip "$i"
			if [[ $del -eq 0 ]]; then
				a=
				read -p "Удалить каталог $i (y/n)? [n]: " a
				case "${a:=n}" in
				N|[nN][oO]) a=n ;;
				esac
			else
				a=y
			fi
			[[ $a == y ]] && echo rm -rf "$i"
		fi
	done
}

if [[ $use_ard -eq 1 ]]; then
	ad "$@"
else
	[[ arch -eq 1 ]] && a1=-a || a1=
	[[ del -eq 1 ]] && a2=-d || a2=
	find / -mindepth 1 -maxdepth 1 -type d -exec $0 $a1 $a2 -X {} \;
fi