Portál AbcLinuxu, 10. května 2025 04:19

Dotaz: Skript na premazanie suborov

24.8.2007 17:58 goodoldalex | skóre: 5 | Bratislava
Skript na premazanie suborov
Přečteno: 394×
Odpovědět | Admin
Ahojte,

poprosil by som nejaku dobru dusu o pomocu s tvorbou jednoducheho skriptu.

Ide o toto:

V adresari mam niekolko suborov s priponov .jpg, v podadresari raw su subory v rovnakym nazvom a priponou .nef. Potrebujem obsah podadresara raw synchronizovat tak, aby sa vymazali vsetky subory .nef, ktore nemaju naprotivok v nadradenom adresari. Tzn. ak existuje 12345.nef ale neexistuje 12345.jpg o uroven vyssie, tak sa 12345.nef zmaze (presunie do kosa).

Taktiez by som tento skrip potreboval nejak dostat do kontextoveho menu, pravdepodobne "Actions", aby som ho mohol spustit priamo v aktualnom adresari. Pouzivam Kubuntu s KDE.

Pod Windows by som to urobit vedel cez batch file, ale linuxove shell skripty vyzeraju prilis komplikovane.

Moze mi niekto pomoct?

Vopred vdaka.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

24.8.2007 18:20 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Skript na premazanie suborov
Odpovědět | | Sbalit | Link | Blokovat | Admin

Jak se přesouvá do koše, to nevím (ve Windows to bývalo to první, co jsem vypínal), ale mazání třeba takto:

#!/bin/bash

shopt -s nullglog
cd raw

for f in *.nef; do
  if [ ! -f "../${f%nef}jpg" ]; do
    rm -v "$f"
  fi
done

chcete-li "tichý chod", vyhoďte přepínač '-v')

24.8.2007 19:55 goodoldalex | skóre: 5 | Bratislava
Rozbalit Rozbalit vše Re: Skript na premazanie suborov
Vdaka, ale zda sa ze nefunguje. Pise mi:

de.sh: 3: shopt: not found
de.sh: 7: Syntax error: "do" unexpected (expecting "then")

BTW co vlastne robi shopt?

24.8.2007 21:41 marbu | skóre: 31 | blog: hromada | Brno
Rozbalit Rozbalit vše Re: Skript na premazanie suborov
shopt je interni prikaz bashe, kterym se da ovlivnit jeho chovani (zkus se treba podivat, co ti vypise shopt zadany na prikazovou radku bez parametru)

v kodu je preklep, melo tam byt asi shopt -s nullglob, coz upravuje chovani expanze jmen souboru(pokud nebude existovat soubor vyhovujici vzoru, vysledkem expanze bude prazdny seznam)
a k te druhe chybe: na 7 radku ma byt misto do then…

There is no point in being so cool in a cold world.
24.8.2007 21:44 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Skript na premazanie suborov

No jo, překlepy. Tak druhá verze:

#!/bin/bash

shopt -s nullglob
cd raw

for f in *.nef; do
  if [ ! -f "../${f%nef}jpg" ]; then
    rm -v "$f"
  fi
done

Ten shopt je kvůli tomu, aby to neházelo chybu, pokud v tom adresáři není žádný soubor s přípnou nef (viz manuálová stránka k bashi, hledejte shopt a nullglob).

24.8.2007 22:43 goodoldalex | skóre: 5 | Bratislava
Rozbalit Rozbalit vše Re: Skript na premazanie suborov
Chapem. Ja som daval man shopt, ale taky man neexistuje, tak som sa cudoval.

Skript funguje, diky. Este by som potreboval ako ho vlozit do Actions menu Konquerora (teraz ho mam v /bin, co je tiez moznost, ale myska mi ide rychlejsie), a ako mazat subory do kosa. Na to prve som nenasiel zatial nic, na kos som nasiel skript dlhy na jednu stranu :/ To nejde jednoduchsie?
24.8.2007 23:33 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Skript na premazanie suborov
Nemám tušení. Jak už jsem napsal, "koš" je funkce, kterou nesnáším, a proto mne ani nezajímají detaily její implementace.
25.8.2007 00:07 miro | skóre: 19 | blog: miro
Rozbalit Rozbalit vše Re: Skript na premazanie suborov
Kos je vacsinou obycajna zlozka ( .Trash, alebo nieco podobne)
Miesto rm pouzit mv a je to... vlozenie do actions menu - vid google. su tam podrebne navody
25.8.2007 00:11 goodoldalex | skóre: 5 | Bratislava
Rozbalit Rozbalit vše Re: Skript na premazanie suborov
Praveze som vygooglil ze to nie je take jednoduche a mv nestaci. Asi sa ten kos chova nejak inak.
25.8.2007 00:30 marbu | skóre: 31 | blog: hromada | Brno
Rozbalit Rozbalit vše Re: Skript na premazanie suborov
tohle je z nápovědy pro ktrash (ktrash --help)
Note: to move files to the trash, do not use ktrash, but "kfmclient move 'url' trash:/"
There is no point in being so cool in a cold world.
25.8.2007 11:36 miro | skóre: 19 | blog: miro
Rozbalit Rozbalit vše Re: Skript na premazanie suborov
S tym googlenim som mal na mysli action menu.

K mazaniu do kosa: v GNOME mam v home adresari zlozku .Trash, ktora predstavuje kos. Ked nieco 'zmazem', presunie sa to tam. Je ale mozne, ze k KDE je to inak. GNOME neobsahuje moznost restore from trash, jedna sa o obycajne presunutie... Ak chcete aj moznost restore, tak potom treba nieco navyse pri 'mazani': http://telin.ugent.be/~slippens/drupal/totrash

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.