Tak kdyby nekdo chtel tak tu mam skript na ruseni poddadresaru. Soubory v nem lze prejmenovat na podadresar_puvodnijmeno, nebo puvodnijmenobezpripony_adresar_pripona, nebo ponechat. Hlida si to, zda uz ten soubor neexistuje pak pridava cislo na konec.
#!/bin/bash
echo "+-------------------------------------------------------------------+"
echo "| Prohleda obsah adresare na dane urovni a pokud v nich najde pod- |"
echo "| adresar, tak veci v nem presune o uroven vys a podadresar smaze. |"
echo "| Jestlize obsahuje jeste skryte soubory, ponecha ho. |"
echo "| Povinne parametry: |"
echo "| 1. 'p' ./podadresar/jmeno.pripona -> ./podadresar_jmeno.pripona |"
echo "| 2. 'j' -> ./jmeno_podadresar.pripona |"
echo "| 2. 'n' -> ./jmeno.pripona |"
echo "+-------------------------------------------------------------------+"
echo " Melo by to snad sezvejkat mezeru v nazvu, apostrofy, &, ..."
if [ $# -lt 1 ] || [ $# -gt 1 ] ; then
echo
echo " Spatny pocet parametru..."
exit 1
fi
poradi=$1
if [ "$poradi" != "p" ] && [ "$poradi" != "j" ] && [ "$poradi" != "n" ] ; then
echo " Spatny parametr..."
exit 1
fi
# Mazani od konce po prvni vyskyt ${promnena%maska}, co to jde ${promnena%%maska}, napr. ${soubor%.*} zrusi jen priponu i s teckou
# Mazani od zacatku po prvni vyskyt ${promnena#maska}, co to jde ${promnena##maska}, napr. ${soubor##*.} smaze vse krome pripony vcetne posledni tecky
for adresar in *
do
if test -d "${adresar}"
then
echo "Adresar: ${adresar}"
cd "${adresar}"
chyba=$?
[ $chyba -gt 0 ] && echo "Nelze vstoupit do adresare: ${adresar}!?" && continue
for soubor in *
do
if test -d "${soubor}" ; then echo "Podadresar..." ; fi
# nema priponu? (neobsahuje tecku?)
if [ "${soubor##*.}" == "${soubor}" ] ; then
if [ "$poradi" == "j" ] ; then naco="${soubor}"_"${adresar}" ; elif [ "$poradi" == "p" ] ; then naco="${adresar}"_"${soubor}" ; else naco=${soubor} ; fi
else
if [ "$poradi" == "j" ] ; then naco="${soubor%.*}"_"${adresar}.${soubor##*.}" ; elif [ "$poradi" == "p" ] ; then naco="${adresar}"_"${soubor}" ; else naco=${soubor}; fi
fi
if test -e "../${naco}" ; then # soubor s timto jmenem o adresar vyse uz existuje... pridame priponu 000+
nuly="000"
bonus="0"
while test -e "../${naco}.${nuly:${#bonus}}${bonus}" ; do
bonus=$(($bonus + 10))
if test -e "../${naco}.${nuly:${#bonus}}${bonus}" ; then
bonus=$(($bonus + 1))
else
bonus=$(($bonus - 9))
fi
done
naco="${naco}.${nuly:${#bonus}}${bonus}"
fi
naco=${naco//"\""/"\\\""} # " -> \"
soubor=${soubor//"\""/"\\\""} # " -> \"
echo "mv -- \"${soubor}\" ../\"${naco}\""
eval "mv -- \"${soubor}\" ../\"${naco}\""
done
cd ".." # nevstoupeni do podadresare bylo osetreno
rmdir -- "${adresar}"
fi
done
|