Portál AbcLinuxu, 27. května 2024 05:49


Dotaz: RAW - jak smazat soubory dle nadrazeneho adresare

9.8.2015 12:50 petrfm | skóre: 23
RAW - jak smazat soubory dle nadrazeneho adresare
Přečteno: 408×
Odpovědět | Admin
Ahoj, ukladam fotky z DSLR do adresaru s nazvy, ve kterych pak vytvorim adresar !RAW a tam presunu jenom rawy. Jenomze, kdyz protridim JPG, zustane mi v RAWech i to, co chci vlastne smazat. Poradi mi nekdo, jak na to?

1) Nabizi se moznost porovnat adresare, vuci tomu s JPG a prebytecne soubory smazat. Ale jak? Ani krusader to neumi srovnavat bez pripony, jen podle nazvu souboru? Da se nejak krusader k tomuto prinutit, aby mi oznacil shodne, nebo rozdilne soubory, bez ohledu na jejich priponu?

2) Lepsi reseni by asi byl skript, ktery by dokazal projit adr. strukturu a v adr. !RAW presunout soubory, ktere jsou navic oproti adresari o jeden level vyse(radeji presunout, nez mazat, mazani je az posledni moznost a radeji bych ji rucne kontroloval). Takovy skript by mohl byt dost univerzalni a mel by jit integrovat do "Cinnosti" v KDE, v dolphinu, takze by se mohl spoustet pravym kliknutim mysi, je to tak, nemylim se?

Poradi mi prosim nekdo, at uz s prvni, nebo druhou variantou? Jsem na bash docela lama, s takovym skriptem bych se delal cely vikend :-(

P.S. napada mne, nedalo by se do cinnosti v dolphinu pridat i funkci, ktera by na jeden klik presunula RAWy do extra adresare? Tzn. zalozila adresar a presunula do nej *.CR2? To by byla celkem fajn vychytavka :-)

Diky moc, P.
fuck the cola, fuck the pizza, all you need is slivovitza

Řešení dotazu:


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

Odpovědi

wamba avatar 9.8.2015 16:30 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: RAW - jak smazat soubory dle nadrazeneho adresare
Odpovědět | | Sbalit | Link | Blokovat | Admin
tenhle Perl script přesune z !RAW/ soubory ve tvaru jmeno_souboru.CR2 do del/!RAW (musí existovat), pokud neexistuje jmeno_souboru.jpg v aktuálním adresáři.
#!/usr/bin/perl
use 5.010;
use strict;
use warnings;

use English qw(-no_match_vars);
use Carp;

our $VERSION = '0.01';

while ( glob '!RAW/*.CR2' ) {
    my $raw = $_;
    s{^ !RAW/ (.*) [.]CR2 $}{$1.jpg}msx;
    next if -e;

    #say $_;
    rename $raw, q{del/} . $raw or croak "$OS_ERROR";
}

This would have been so hard to fix when you don't know that there is in fact an easy fix.
Řešení 1× (petrfm (tazatel))
9.8.2015 20:25 nobody
Rozbalit Rozbalit vše Re: RAW - jak smazat soubory dle nadrazeneho adresare
Odpovědět | | Sbalit | Link | Blokovat | Admin
skript v bash... uloz do /usr/local/bin/rawtridic, nastav spousteci atribut pomoci: chmod +x /usr/local/bin/rawtridic a volej s cestou k fotkam: rawtridic cesta_k_fotkam (nebo zmen nastaveni promene JPG na zacatku(a smazat radek s exit nad tim, kterej je ted z duvodu nezadane nebo spatne zadane cesty aby nepokracovalo dal))...

pri prvnim spusteni skriptu pri neexistujicim !RAW ho vytvori a presune tam soubory CR2(pokud !RAW uz existovalo nic nepresouva, tedy zadne pripadne pozdeji pridane CR2), pri dalsim spusteni skriptu CR2 patrici k JPG ktere si promazal, presune do RAW kose...

btw: psal jsi velke CR2 a JPG, pokud mas ve skutecnosti male, zmen ve skriptu pripony .CR2(3x) .JPG(1x) na male :)
#!/bin/bash

set -e

[[ -d "${1}" ]] || exit 0

JPG="${1}"
RAW="${JPG}/!RAW"
RAW_TRASH="${RAW}/TRASH"

[[ -d ${RAW} ]] || $(mkdir -p ${RAW}; mv ${JPG}/*.CR2 ${RAW})

mkdir -p ${RAW_TRASH}

for file in ${RAW}/*.CR2; do
    filename=$(basename ${file})
    [[ -s ${JPG}/${filename/.CR2/.JPG} ]] || mv ${file} ${RAW_TRASH}
done
10.8.2015 03:32 petrfm | skóre: 23
Rozbalit Rozbalit vše Re: RAW - jak smazat soubory dle nadrazeneho adresare
To je luxus, diky moc, vyzkousim a dam vedet, jak to fungovalo :-) Mozna se to bude hodit vice lidem, urcite podobny problem neresim jenom ja, kdyz jsem googlil, narazil jsem na dost lidi, co tohle otravuje a skript je super reseni.

Do toho KDE uz si to nejak integruju, nasel jsem clanky, kde se popisuje, jak vytvorit doplnek pro dolphina, tak snad to zmaknu, pokud se podari, prihodim sem. Nikdy jsem to nedelal, ale tusim, ze ty doplnky, kdyz se spousteji, resp volaji pres nabidku pri pravem kliku mysi, je jim nejak predavana cesta, odkud jsou spusteny, protoze se tim delaji casto operace nad soubory a adresari, takze to pak bude super pomucka, integrovana primo do menu v KDE.
fuck the cola, fuck the pizza, all you need is slivovitza
12.8.2015 23:55 petrfm | skóre: 23
Rozbalit Rozbalit vše Re: RAW - jak smazat soubory dle nadrazeneho adresare
Tak jsem to zatim zkousel v terminalu a funguje vyborne, jen se zeptam, nedalo by se tam doplnit, aby si pri spusteni bez parametru nacetl cestu, ze ktere ho volam? Protoze ted si muzu v krusaderu pravym otevrit CLI primo ve slozce s fotkama a nemusel bych tak zadavat cestu, jen napsat rawpresun a hotovo
fuck the cola, fuck the pizza, all you need is slivovitza
13.8.2015 01:20 petrfm | skóre: 23
Rozbalit Rozbalit vše Re: RAW - jak smazat soubory dle nadrazeneho adresare
Tak jsem narazil na maly problem. Kdyz jsem mel obrazky v home/petr/pokus, bylo vse OK, ale ja si je tridim do slozek s nazvem 2015_08_10 Vylet Nekde neco a tady vznika problem, protoze mi to nad tim vytvorilo slozku Nekde a v ni !RAW a v ni 2015_08_10 a Vylet , ktere jsou prazdne.

Evidentne se nekde rozbije ta cesta k souboru. Neni treba to nejak osetrit, aby to fungovalo i v takhle dlouhych cestach a pri pouziti znaku _ ! a mezera?
fuck the cola, fuck the pizza, all you need is slivovitza
13.8.2015 17:03 nobody
Rozbalit Rozbalit vše Re: RAW - jak smazat soubory dle nadrazeneho adresare
njn, mezery je potreba osetrit na nekolika mistech uvozovkama :) pridan i komentar co zmenit aby se bez zadani adresare jako parametr pouzil aktualni adresar jak ses ptal nekde okolo i kdyz uz to mozna nepotrebujes kdyz mas akci pro delfina kterej predava dir, to byl duvod proc sem to primarne delal na pritomnost parametru ;)
#!/bin/bash

set -e

# smazat pokud nechces kontrolovat existenci adresare zadavaneho parametrem a ukoncovat
[[ -d ${1} ]] || exit 0

# pokud nastavit aktualni dir kdyz nezadas parametrem, zmen JPG="${1}" na JPG=${1-$PWD}
JPG="${1}"
RAW="${JPG}/!RAW"
RAW_TRASH="${RAW}/TRASH"

[[ -d ${RAW} ]] || $(mkdir -p "${RAW}"; mv "${JPG}"/*.CR2 "${RAW}")

mkdir -p "${RAW_TRASH}"

for file in "${RAW}"/*.CR2; do
    filename=$(basename "${file}")
    [[ -s ${JPG}/${filename/.CR2/.JPG} ]] || mv "${file}" "${RAW_TRASH}"
done
Řešení 1× (petrfm (tazatel))
13.8.2015 01:03 petrfm | skóre: 23
Rozbalit Rozbalit vše Re: RAW - jak smazat soubory dle nadrazeneho adresare
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak jsem se hecnul a dodelal to... Pripojuji skript, ktery navazuje na bash script, od nobody a ktery prida do KDE novou polozku RAW presun, spoustejici zmineny bash script i s cestou, odkud jsem kliknul.

Je treba vytvorit soubor ~/.kde4/share/kde4/services/ServiceMenus/rawpresun.desktop

s timto obsahem :
 
[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin,all/all,all/allfiles,inode/directory,inode/directory-locked'
Actions=rawmove


[Desktop Action rawmove]
Name=RAW move
Name[cs]=RAW přesun
Icon=kfm
Exec= rawpresun %U
Prida do dolphina mezi cinnosti RAW presun, ktery spusti skript v bashi rawpresun a vlozi mu cestu, odkud byl spusten. Staci tedy najet do slozky s fotkama a pravym tlacitkem kliknout na polozku Činnosti/RAW presun a razem jsou fotky urovnane a nadbytecne RAWy jsou ve slozce k vymazani.

Funguje to perfektne, jsem nadseny, tohle bych na windows asi neudelal :-) Diky za pomoc.
fuck the cola, fuck the pizza, all you need is slivovitza

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.