LinuxForum.Fans
Тема

Скрипт запускается, но ничего не делает

Автор: mike_rzn 2 сообщений 1218 просмотров
17.03.2015 18:41 #418319

Доброго времени суток. Скрипт должен рекурсивно просматривать папки и менять расширение на первую букву у файлов, размер которых меньше заданного во втором аргументе. Первый аргумент - директория. Еще скрипт не должен менять сам себя. Что у меня неправильно?

text
#!/bin/bash
if [[ "$1" == "?" ]]
    then
            echo "скрипт меняет расширение на первую букву у тех файлов,\n размер которых меньше заданного во втором аргументе. "
        exit 1
fi
case $# in
        2) dirname=$1
          fsize=$2 ;;
        0) read -p "Введите адрес директории >>>  " dirname
          read -p "Введите размер файлов для замены суфикса >>>  " fsize ;;
        *) echo "Использование: скрипт директория размер"
          exit 1 ;;
esac
if [[ -d "$dirname" ]]
    then
            find "$dirname" -type f -size -$fsize not -samefile BASH_SOURCE  | while IFS='\n' read file
            do
                dir_name=$(dirname $file)
                file_name=$(basename $file)
                prefix=$(expr substr $file_name 1 1)
                suffix=${file_name##*.}
                newfilename=$dirname/${file_name%%$suffix}$prefix
            done
    else
            echo "Неправильное имя/адрес директории"
        exit 1
fi
17.03.2015 20:30 #418354

Я не стал вникать, что там неправильно, но вот скрипт,
действительно обходящий каталоги рекурсивно. Называется ~/bin/set644_b

text

#!/bin/bash

#parameter is a directory name /bin/chmod 755 "$1" cd "$1" #echo "enter in" "$1" >> ~/set644_b.out for flnm in `/bin/ls -1` ; do if [ -d "$flnm" ] ; then #echo "directory" "$flnm" >> ~/set644_b.out ~/bin/set644_b "$flnm" else if [ -f "$flnm" ] ; then #echo "file" "$flnm" >> ~/set644_b.out /bin/chmod 644 "$flnm" fi fi done cd ../

Пётр.

Войдите или зарегистрируйтесь, чтобы ответить.