Sziasztok,
adott egy könyvtárszerkezet, amiben fotókat tartok, de ezekből sok (de nem mindegyik) két példányban is létezik, .cr2 illetve .jpg kiterjesztéssel.
Mi a legegyszerűbb módja hogy minden .cr2 kiterjesztést letöröljek AMENNYIBEN létezik .jpg belőle?
Ubuntu 14.04, gondolom bash-ben megoldható :)
Köszi előre is!
- 3573 megtekintés
Hozzászólások
Én a .cr2-tőt tartanám meg. Reggeli után írok megoldást is, de most nagyon éhes vagyok.
- A hozzászóláshoz be kell jelentkezni
NAS-on van backup mindegyikből (tudom hogy a RAW jobb, de a notin az SSD-n csak a .jpg-ket tartanám :) )
- A hozzászóláshoz be kell jelentkezni
Ezért ez még bőven csiszolható, abból a feltételezésből indultam ki, hogy csak .jpg van és nincs .Jpg vagy hasonló.
#!/bin/bash
find . -name "*.jpg" | while read JPGFile
do
CR2File="${JPGFile%jpg}cr2"
if [ -f "${CR2File}" ]
then
echo rm "${CR2File}"
fi
done
Hm, nálam kb. 1.5G hely szabadult fel... már megérte foglalkozni vele (igaz én fordítva töröltem :D)
- A hozzászóláshoz be kell jelentkezni
find . -name '*.cr2' -exec sh -c 'if [ -f "${1%cr2}jpg" ]; then rm "$1"; fi' delete_jpgs {} \;
- A hozzászóláshoz be kell jelentkezni
Nem inkább delete_raw? Kevésbé lenne megtévesztő :D
- A hozzászóláshoz be kell jelentkezni
De :)
- A hozzászóláshoz be kell jelentkezni
Meg gondolkoztam, hogy lehetne rm -f, ami nem panaszkodik ha nincs ott a file, így kihagyható(*) az ellenőrzés, és akkor:
find . -iname '*.jpg' -exec bash -c 'rm -f "${1%:0:-3}cr2"' a {} \;
De ezt még macerásabb olvasni, pláne javítani. Különösen ha kiötlök még valami case-fix voodoo-t, pl.:
find . -iname '*.jpg' -exec bash -c 'rm -f "${1%:0:-3}[cC][rR]2"' a {} \;
*) Egyébként is kihagyható persze, kit érdekel a hiszti :D
- A hozzászóláshoz be kell jelentkezni
Bash-ben a -3 elé nem kell egy szóköz?
${1%:0: -3}
openSUSE 13.1 x86_64.
- A hozzászóláshoz be kell jelentkezni
Nem:
fisher@ap:~$ A=123456 ; echo ${A:0:-3}xxx
123xxx
fisher@ap:~$ echo $BASH_VERSION
4.2.37(1)-release
- A hozzászóláshoz be kell jelentkezni
Akkor bocs. Valamit összekeverhettem.
# A=123456 ; echo ${A:-3}xxx
123456xxx
# A=123456 ; echo ${A: -3}xxx
456xxx
# echo $BASH_VERSION
4.2.53(1)-release
openSUSE 13.1 x86_64.
- A hozzászóláshoz be kell jelentkezni
Ez frankón működik (most már tudom hogy van a find-nak actions része is :) ), viszont case sensitive, és esetemben CR2 és JPG volt a kiterjesztés :)
Köszi!
- A hozzászóláshoz be kell jelentkezni
Hárommal lejjebb ott van, hogy -iname a -name helyett.
- A hozzászóláshoz be kell jelentkezni
Igen: http://hup.hu/node/136897?comments_per_page=9999#comment-1807078
find . -iname '*.jpg' -exec bash -c 'rm -f "${1%:0:-3}[cC][rR]2"' a {} \;
- A hozzászóláshoz be kell jelentkezni
Köszi, sorban mentem és addig akkor még nem jutottam :)
- A hozzászóláshoz be kell jelentkezni
keresd a *.cr2 file-okat majd vagd le a vegerol a cr2 kiterjesztest es tedd hozza a jpg majd az igy keletkezett filokat torolheted.
Erdmeny: ha volt ilyan torolte, ha nincs ilyen akkor jelezi, hogy nem tudja torolni.
- A hozzászóláshoz be kell jelentkezni
Yes. Bar nem irta, hogy neki a kod kell. ;)
- A hozzászóláshoz be kell jelentkezni
köszi mindenkinek az agyvihart :) innen már megoldom szerintem :)
- A hozzászóláshoz be kell jelentkezni