mais pour les espaces cette fois-ci.
rename_all_space2underscore
Code : Tout sélectionner
#!/bin/sh
(
tmpfile=$(mktemp)
if [ -d "$*" ] ; then
find "$*" -type d | sort -r | sed -e "s/\.\///g" | sed -e "s/^\.$//g" | grep "[[:blank:]]" > "$tmpfile"
nline=$( wc -l < "$tmpfile" )
echo "# directories renaming..."
i=1
while read -r line
do
n=$(echo "$line" | tr -d -c "/" | wc -c )
if [ "$n" -ge 1 ]
then
dirp=$( echo "$line" | cut -d "/" -f1-"$n" )
n=$(( n +1 ))
dir=$( echo "$line" | cut -d "/" -f$n )
mv "$line" "$dirp"/"$(echo "$dir" | tr "[:blank:]" "_")"
else
mv "$line" "$(echo "$line"| tr "[:blank:]" "_")"
fi
echo $(( (i * 46 ) / nline ))
i=$(( i +1 ))
done < "$tmpfile"
n=$(echo "$*" | tr -d -c "/" | wc -c )
if [ "$n" -ge 1 ]
then
dirp=$( echo "$*" | cut -d "/" -f1-"$n" )
n=$(( n +1 ))
dir=$( echo "$*" | cut -d "/" -f$n )
cd "$dirp"/"$(echo "$dir" | tr "[:blank:]" "_")" || exit
else
cd "$(echo "$*" | tr "[:blank:]" "_")" || exit
fi
echo "50"
find -type f | sort -r | sed -e "s/\.\///g" | grep "[[:blank:]]" > "$tmpfile"
nline=$( wc -l < "$tmpfile" )
echo "# files renaming..."
while read -r line
do
n=$(echo "$line" | tr -d -c "/" | wc -c )
if [ "$n" -ge 1 ]
then
dirp=$( echo "$line" | cut -d "/" -f1-"$n" )
n=$(( n +1 ))
file=$( echo "$line" | cut -d "/" -f$n )
mv "$line" "$dirp"/"$(echo "$file" | tr "[:blank:]" "_")"
else
mv "$line" "$(echo "$line" | tr "[:blank:]" "_")"
fi
echo $(( ((i * 50 ) / nline) + 46 ))
i=$(( i +1 ))
done < "$tmpfile"
fi
if [ -f "$*" ] ; then
n=$(echo "$*" | tr -d -c "/" | wc -c )
if [ "$n" -ge 1 ]
then
dirp=$( echo "$*" | cut -d "/" -f1-"$n" )
n=$(( n +1 ))
file=$( echo "$*" | cut -d "/" -f$n )
mv "$*" "$dirp"/"$(echo "$file" | tr "[:blank:]" "_")"
else
mv "$*" "$(echo "$*" | tr "[:blank:]" "_")"
fi
fi
sleep 1
rm "$tmpfile"
echo "100"
) |
zenity --progress \
--title="Rename all lower < $* >" \
--text="renaming..." \
--percentage=0 \
--width=400 \
--auto-close
if [ "$?" != 0 ] ; then
rm "$tmpfile"
zenity --error \
--text="Renaming cancel."
fi