Помогите создать скрипт для nautilus'а

  • Sk8er Sk8er 18-07-11, 21:30
    Ребят, для удобства хочу набыдлокодить 2 простеньких скрипта для ubuntu и можно было бы ими пользоваться с помощью "Сценариев". Ну это когда пкм по файлу и в меню пункт "Сценарии".

    Суть первого скрипта такова. Нужно, что бы если файл - картинка (то есть формат jpg, png, gif и тд), то он копировал этот файл в определённую папку и переименовывал его (естественно переименовывал тот файл, который был скопирован, а не оригинал). Имя нужно такое, что бы генерировалась автоматически, состояло из восьми символов, а символы были следующие: строчные и заглавные латинские буквы, а так же цифры. Но если файл не картинка, то что бы он копировался в другую категорию, но не переименовывался.

    Второй скрипт точно такой же, только нужно, что бы файлы не копировались, а перемещались.

    Думаю можно догадаться, что это мне нужно для домашнего веб сервера :) что бы делиться картинками, файлами и прочим. ну и для удобства разделить файлы от картинок, и копирование от перемещения. А то руками не очень удобно каждый раз перекидывать.
    Твитнуть
  • Zegi 25-07-11, 03:16
    Примерно так:
    #!/bin/bash
    NOMBREBASE=`basename "$*"`
    direc="$PWD/$NOMBREBASE"
    gen=`pwgen 8 1`
    if [[ $NOMBREBASE == *.jpg ]] ||
    [[ $NOMBREBASE == *.bmp ]] ||
    [[ $NOMBREBASE == *.png ]]; then
    cp $direc ~/folder/$gen
    else
    cp $direc ~/folder2/$NOMBREBASE
    fi

    Думаю догадаетесь, как добавить новые расширения.
    Для второго срипта просто меняем cp на mv.
    P.S.: Должен быть установлен пакет pwgen (sudo apt-get install pwgen)
  • Sk8er Sk8er 31-07-11, 08:41
    @Zegi: поставил, пробую - не работает. Запустил через консоль, вот какая ошибка:

    cp: указанная цель «$*» не является каталогом

    Что делать?
  • Zegi 9-08-11, 10:17
    Я имел ввиду пометить скрипт в ~/.gnome2/nautilus-scripts и не забудь сделать исполняемым (chmod +x ~/.gnome2/nautilus-scripts/имя_скрипта). Потом правой кнопкой на файле>сценарии>имя_скрипта.
    Имя файла и путь к нему забьются в переменные NOMBREBASE и direc соответственно.
  • Zegi 14-08-11, 03:35
    Этот ответ был Accepted
    Было скучно решил усовершенствовать скрипт:

    #!/bin/bash
    gen=`pwgen 8 1`
    ls $PWD > tmpspisok.txt
    f=`cat tmpspisok.txt`
    for n in $f
    do
    if [[ $n == *.jpg ]] ||
    [[ $n == *.bmp ]] ||
    [[ $n == *.png ]]; then
    cp $n ~/folder/$gen
    else
    cp $n ~/folder2/$n
    fi
    done
    rm tmpspisok.txt

    Как использовать:
    Создаём 2 папки. ~/folder и ~/folder2 (mkdir ~/folder mkdir ~/folder2).
    Переходим в терминале в каталог в котором нужно копировать файлы (cd путь/к/каталогу).
    Запускаем скрипт. Где будет хранится сам скрипт не важно.(например: ~/bin/./scriptname).
    Готово.
    Эта версия выгодно отличается от предыдущей версии скрипта тем, что проверяет все файлы в каталоге, а не только 1.
    Когда в следующий раз будет скучно попробую прикрутить рекурсию, т.е. что бы скрипт проверял и вложенные каталоги.
    P.S.: Я ни когда не изучал этот скриптовый язык и всё делаю методом проб и ошибок... возможно есть способы красивее, но я их пока не знаю.
Комментировать

Привет, незнакомец!

Похоже, вы новенький! Чтобы пообщаться с нами, кликните на одну из кнопок ниже :)

Войти Зарегистрироваться

В этой теме: