1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

Когда надоело перемещать файлы вручную...

Тема в разделе "Утилиты", создана пользователем metr, 8 мар 2015.

  1. TopicStarter Overlay
    metr

    metr Новичок

    Регистрация:
    02.05.13
    Сообщения:
    26
    Симпатии:
    7
    Баллы:
    10
    Всегда напрягало сортировать файлы из папаки загрузок. Когда начал редактировать фото в GIMP, в папке "Загрузки" количество файлов стало увеличиваться в геометрической прогрессии. Вручную сортировать стало утомительно... придумалось это:
    Код:
    #!/bin/bash
    # Maid_v.0.1
    
    dir_file=/home/user/Загрузки
    d_img=/home/user/Imeg
    d_mus=/home/user/Musik
    d_vid=/home/user/Video
    d_doc=/home/user/Doc
    d_txt=/home/user/Text
    d_deb=/home/user/Deb
    d_arc=/home/user/Arch
    d_scr=/home/user/Scripts
    d_gimp=/home/user/GIMP
    n=0
    bed_n=0
    #################################################
    help_script(){
    cat<<End-of
    Порядок использования:
    
    `basename $0`        -Скрипт работает в неинтерактивном режиме. Все исходные данные указываются в теле скрипта.
    `basename $0` /dir    -Указать директорию которую обработать.
    End-of
    exit 0
            };
    
    while getopts ":h" opt;do
    case $opt in
    h) help_script;;
    *) echo "Неизвестный ключ!!!";help_script;;
    esac
    done
    
    mvf(){
    if [ -d "$2" ];then
        date_dir=$(date "+%d.%m.%y")
        mkdir -p ${2}/${date_dir}
        mv "$1" "$2/${date_dir}"
        if [ "$?" -eq 0 ];then
        let "n += 1";echo "Перемещено файлов: $n"
        else echo "ERROR: Файл $1 не удалось переместить в $2";let "bed_n += 1"
        fi
    
    else echo "Каталог $2 не существует"
    fi
    }
    oldpwd=$(pwd);f_dir=${1:-$dir_file};
    cd $f_dir &>/dev/null
    if [ "$?" -eq 0 ];then :
    else echo "ERROR:Невозможно обработать директорию $f_dir!!!";exit 1
    fi
    for f in *
    do
        if [ -d "$f" ];then
        continue
        else echo
        f_type=$(file "$f"|awk 'BEGIN{FS=":"}{print $2}'|awk '{print $1}')
    #    echo "FILE=$f    TYPE=$f_type"
        fi
        case $f_type in
        JPEG|GIF|PNG|SVG) mvf "$f" "$d_img";;
        MPEG|Audio) mvf "$f" "$d_mus";;
        HTML|XML) mvf "$f" "$d_doc";;
        Debian) mvf "$f" "$d_deb";;
        Zip|RAR|gzip|bzip2|POSIX|7-zip) mvf "$f" "$d_arc";;
        ASCII) mvf "$f" "$d_txt";;
        Bourne-Again) mvf "$f" "$d_scr";;
        ISO) mvf "$f" "$d_vid";;
        GIMP) mvf "$f" "$d_gimp";;
        esac
       
    done
    
    echo -e "\vПосле обработки "$f_dir"\n#\tВсего перемещено файлов: "$n"\t#\n#\tНе удалось переместить: "$bed_n"\t#\v"
    cd $oldpwd
    
    exit 0

Поделиться этой страницей