Автор Гілка: Потрібен скрипт (робота з файлами)  (Прочитано 2847 раз)

Відсутній Moses

  • Кореспондент
  • ***
  • дописів: 156
  • Карма: +0/-0
  • Наша рросповідь...
Панове, першим ділом я хотів би просити вибачення за нахабство  :-[ Бо, признаюся чесно, сам нічого не зробив для вирішення своєї задачі. Рік тому я читав великий ман по башу і пробував робити невеличкі скриптики, але реальних задач не виникало, тож за непотрібністю усе забулося. Тепер з’явилася реальна потреба, але от саме зараз не можу виділити час, щоб освіжити знання по башу та хоча б спробувати написати цей скрипт самому. Сподіваюся, що для когось моя задачка стане невеличкою розминкою для розуму і не відніме багато часу.

Тож, задача.
Є тека з фотографіями, формат jpg. У цій теці є інша, названа nef. У ній фотографії у форматі nef. Назви фотографій у цих двох директоріях відрізняються лише розширенням, наприклад DSC_0064.JPG та DSC_0064.NEF. Коли я передивляюсь фотографії у jpg, я видаляю усі, що не сподобалися. Так от, задача скрипта — видалити з теки nef усі файли з назвами, яких немає у теці з jpg-фотографіями.

Відсутній Михайло Даниленко

  • Адміністратор ЩОДО
  • Літератор
  • *****
  • дописів: 1262
  • Карма: +0/-0
  • [Debian Stretch]
Re: Потрібен скрипт (робота з файлами)
« Відповідей #1 : 2009-07-18 20:25:44 »
Щось на кшталт цього
cd ~/picts/photo
for file in nef/*.NEF ; do
  t="${file%.*}.JPG"
  t="${file#*/}"
  if ! [ -f "$t" ] ; then
    rm "$file"
  fi
done

Відсутній Михайло Даниленко

  • Адміністратор ЩОДО
  • Літератор
  • *****
  • дописів: 1262
  • Карма: +0/-0
  • [Debian Stretch]
Re: Потрібен скрипт (робота з файлами)
« Відповідей #2 : 2009-07-18 20:28:17 »
P.S. Це якщо всі назви у верхньому регістрі

Відсутній Moses

  • Кореспондент
  • ***
  • дописів: 156
  • Карма: +0/-0
  • Наша рросповідь...
Re: Потрібен скрипт (робота з файлами)
« Відповідей #3 : 2009-07-18 21:41:39 »
Щось на кшталт цього
cd ~/picts/photo
for file in nef/*.NEF ; do
  t="${file%.*}.JPG"
  t="${file#*/}"
  if ! [ -f "$t" ] ; then
    rm "$file"
  fi
done
гм... видаляє геть усі файли *.NEF

Відсутній Михайло Даниленко

  • Адміністратор ЩОДО
  • Літератор
  • *****
  • дописів: 1262
  • Карма: +0/-0
  • [Debian Stretch]
Re: Потрібен скрипт (робота з файлами)
« Відповідей #4 : 2009-07-18 22:07:06 »
А, так...
  t="${file%.*}.JPG"
  t="${t#*/}"
  if ! [ -f "$t" ] ; then
Сподіваюся, ви зробили їм бекап перед тим, як пробувати (чи поставили echo перед rm - як я часто роблю)...

Відсутній Moses

  • Кореспондент
  • ***
  • дописів: 156
  • Карма: +0/-0
  • Наша рросповідь...
Re: Потрібен скрипт (робота з файлами)
« Відповідей #5 : 2009-07-18 23:04:51 »
А, так...
  t="${file%.*}.JPG"
  t="${t#*/}"
  if ! [ -f "$t" ] ; then
Ідеально! Щіро дякую.

Сподіваюся, ви зробили їм бекап перед тим, як пробувати (чи поставили echo перед rm - як я часто роблю)...
Так  :)

Ще питання. Підкажіть будь-ласка зручний спосіб запуску скриптів. У Ґном я клав їх до теки ~/.gnome2/nautilus-scripts та запускав з контекстного меню наутілусу. А от у xfce не знаю зручного способу. Куди його треба класти, щоб у терміналі можна було його викликати як команду?

Відсутній cadca

  • Письменник
  • *****
  • дописів: 955
  • Карма: +0/-0
  • free like beer
Re: Потрібен скрипт (робота з файлами)
« Відповідей #6 : 2009-07-19 10:31:36 »
Куди його треба класти, щоб у терміналі можна було його викликати як команду?
~/bin
Ubuntu 20.04/18.04; CentOS 7.x

Відсутній Moses

  • Кореспондент
  • ***
  • дописів: 156
  • Карма: +0/-0
  • Наша рросповідь...
Re: Потрібен скрипт (робота з файлами)
« Відповідей #7 : 2009-07-20 19:24:20 »
Куди його треба класти, щоб у терміналі можна було його викликати як команду?
~/bin
Можна трохи більш розгорнуто? Нічого не вийшло.

Відсутній yurchor

  • Видавець
  • *******
  • дописів: 3636
  • Карма: +3/-0
  • Grateful for our Iron Lung
    • Вікі користувачів KDE
Re: Потрібен скрипт (робота з файлами)
« Відповідей #8 : 2009-07-20 19:40:05 »
Куди його треба класти, щоб у терміналі можна було його викликати як команду?
~/bin
Можна трохи більш розгорнуто? Нічого не вийшло.
Це тому що Ubun<слово, заборонене цензурою>. У Mandriva прописано рядок PATH=$PATH:$HOME/bin у файлі ~/.bash_profile. А у <слово, заборонене цензурою> взагалі не bash.

Скопіюйте до /usr/bin.
Try to reach you before winter comes
Always a place for you in my heart
You're not alone
All used up
I'd give anything to talk to you

Ололололо

  • Гість
Re: Потрібен скрипт (робота з файлами)
« Відповідей #9 : 2009-07-20 19:55:53 »
А у <слово, заборонене цензурою> взагалі не bash.
dash там тільки як дефлотний інтерпретатор з претензією на POSIX-сумісність, якщо що. Як інтерактивний шелл все той же bash.

Скопіюйте до /usr/bin.
/me !

Може, вже згаданий рядок в profile додати, нє?

Praporshic

  • Гість
Re: Потрібен скрипт (робота з файлами)
« Відповідей #10 : 2009-07-20 21:36:18 »
Скопіюйте до /usr/bin.
@)&*#()@&GDUE!)_)!@((*&E^#(^*&!!!!!!!  >:(
Скільки разів казати: /usr/local/ для усіх збочень!  >:(

Відсутній yurchor

  • Видавець
  • *******
  • дописів: 3636
  • Карма: +3/-0
  • Grateful for our Iron Lung
    • Вікі користувачів KDE
Re: Потрібен скрипт (робота з файлами)
« Відповідей #11 : 2009-07-21 07:11:18 »
Скопіюйте до /usr/bin.
@)&*#()@&GDUE!)_)!@((*&E^#(^*&!!!!!!!  >:(
Скільки разів казати: /usr/local/ для усіх збочень!  >:(
:-[
Наслідки відвідування одного форуму. Там користувачі відомого дистрибутива навіть Google Earth встановлюють від root.  ;)
Try to reach you before winter comes
Always a place for you in my heart
You're not alone
All used up
I'd give anything to talk to you