Portál AbcLinuxu, 9. listopadu 2025 07:02
#!/bin/bash
SIMULACIA=y
urob() {
find | sort -dr | (while read i; do
[ "$i" = "." ] && continue
if [ "`test $1 "$i"; echo $?`" = "0" ]; then
NOVY=`echo "$i" | sed 's/ /_/g;y/ČčÝýÚúŮůŇňŘřŠšŽž/CcYyUuUuNnRrSsZz/'` # sem dopln odstranovanie diakritiky
if [ "$SIMULACIA" = "y" ]; then
echo "mv '$i' '$NOVY'"
else
mv "$i" "$NOVY"
fi
fi
done)
}
urob -d # najprv len adresare
urob -f # potom len subory
mv './#_MP3/Stone_Temple_Pilots/1992 - Core/Core - 07 - Creep.mp3' './#_MP3/Stone_Temple_Pilots/1992-Core/Core-07-Creep.mp3' mv: cannot stat `./#_MP3/Stone_Temple_Pilots/1992 - Core/Core - 07 - Creep.mp3': No such file or directory
mv "$i" "`echo \"$i\" | iconv -f utf-8 -t us-ascii//translit`"
#!/bin/bash
# premenuje obsah vsetkych zadanych adresarov tak, aby neobsahovali diakritiku
# a zjednodusi ich mena
if [ $# -eq 0 ];then
echo "Usage: ${0##*/} directory ..."
else
while [ $# -gt 0 ];do
if [ -d "$1" ];then
find "$1" -mindepth 1 -maxdepth 1 |
while read name; do
echo "$name" >&2
nname=`sed -r 'y/ĄąÁÂĂÄáâăäĆÇČćçčĎĐďđÉĘËĚéęëěÍÎíłľĹĺŃŇńňÓÔŐÖóôőöŔŕŘřŚŠŞśšşŤťŢţŮÚŰÜůúűüÝýŹŽŻźžż\x9D\x9A\x9E\x8D\x8A\x8E/AaAAA
s/[^-0-9a-zA-Z_./()]+/_/g
s/([-_])\1*/\1/g
s/^[-_]+//
s/[-_]*-[-_]*/-/g
s/[-_ ]+([.()])/\1/g
s/([.()])[-_ ]+/\1/g' <<<"$name"`
if [[ "$name" != "$nname" ]]; then
if [[ -e "$nname" ]]; then
oname="$nname"
for ((i=0; i<1000; i++)); do
nname="${oname%.*}."`printf %04d $i`".${oname##*.}"
[[ ! -e "$nname" ]] && break
done
fi
mv -v "$name" "$nname"
fi
find "$1" -mindepth 1 -maxdepth 1 -type d -print0 | xargs -0r "$0"
done
shift
else
echo "Directory $1 does not exist" >&2
fi
done
fi
zkousel jsem tento skript...a on mi napsal tuhle chybu:
./rename.sh rename
rename/Dobytí severního pólu.mpg
sed: -e expression #1, char 192: unterminated `y' command
`rename/Dobytí severního pólu.mpg' -> `'
mv: cannot move `rename/Dobytí severního pólu.mpg' to `': No such file or directory
Co s tim?
Kdyz to udelam takto, tak mi to z nazvu udela takove paskvily...
napr:
DobytA_severnA_ho_pA3lu.mpg
zkousel jsem tento skript...a on mi napsal tuhle chybu:
Ještě mě napadlo - soubor obsahuje mezeru, měl by se dát do uvozovek. Pak to nenahlásí, že soubor nebyl nalezen. Například při přehrávání souboru je možné zadat příkaz
mplayer soubor.mpg, avšak v případě mezer je nutné zadat
mplayer "první soubor.mpg", vámi uvedený skript možná obsahuje tento problém.
Tak jsem objevil, ze v karename je plugin, ktery tohle umi, ale je zatim experimentalni....mate s nim nejake zkusenosti?
Prisli jste uz kvuli nemu nekdo o data?
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.