Autor |
Sõnum |
daddo
Pingviini kasutaja
Liitunud: 19.07.2005
Postitused: 98
Distributsioon: Ubuntu
|
|
Kas keegi aitaks koostada väikese scripti, mis kustutaks digikaamera mälukaardilt kopeeritud kataloogist (mis sisaldab faile kujul
IMG_1234.JPG
IMG_1235.JPG
...)
failid, mille nimi POLE samas kataloogis olevas tekstifailis ärakustuta.txt (sisuliselt ls -1 >>ärakustuta.txt kaudu saadud fail, kust on valikuliselt kustutatud osade failide nimed).
Ehk tekstifail nimekirjaga sisaldab failinimesid, mida ei tohi kustutada ja nimekirjast puuduvad failid kõik kustutamisele.
|
|
|
|
|
|
|
|
mckevin
Pingviini aktivist
Vanus: 35
Liitunud: 02.05.2007
Postitused: 121
Asukoht: tallinn
Distributsioon: Arch Linux x86_64
|
|
midagi nii peaks olema
Kood: |
#!/bin/bash
for f in *; do
kustuta=1;
for d in $(cat ärakustuta.txt); do
if [ "$f" = "$d" ]; then
kustuta=2;
fi
done
if [ "$kustuta" = "1" ]; then
ls $f #asenda rm $f -ga kui oled kindel et töötab õigesti
fi
done |
|
|
|
|
|
|
|
|
daddo
Pingviini kasutaja
Liitunud: 19.07.2005
Postitused: 98
Distributsioon: Ubuntu
|
|
mckevin kirjutas: | Kood: |
#!/bin/bash
for f in *; do
kustuta=1;
for d in $(cat ärakustuta.txt); do
if [ "$f" = "$d" ]; then
kustuta=2;
fi
done
if [ "$kustuta" = "1" ]; then
ls $f #asenda rm $f -ga kui oled kindel et töötab õigesti
fi
done | |
Põhimõtteliselt tundub tegevat täpselt seda, mida soovisin, ainult et... avastasin, et kui sekka juhtub faile, mille nimes on mingil põhjusel tühik, näiteks IMG_0068 (koopia).jpg, siis kood jääb hätta:
Tsitaat: | rm: `IMG_0068' ei saa kustutada: No such file or directory
rm: `(koopia).jpg' ei saa kustutada: No such file or directory |
|
|
|
|
|
|
|
|
bobc
Pingviini aktivist
Vanus: 43
Liitunud: 09.07.2005
Postitused: 165
Asukoht: undef
Distributsioon: SouRCe64 GNU/Linux
|
|
Pakkuks ka omalt poolt pikema variandi:
Kood: |
#!/bin/sh
oIFS=$IFS
IFS=$'\n'
`ls --color=never -1 > templist.txt`
for ignore in $(cat ./ignore.txt)
do
echo "Eemaldan listist: ${ignore}"
sed -i "s|${ignore}||g" ./templist.txt
done
for remove in $(cat ./templist.txt)
do
if [ "${remove}" != "" ]; then
if [ -f "${remove}" ]; then
echo "F:${remove}"
#rm "${remove}"
fi
fi
done
IFS=$oIFS
|
ignore.txt asenda oma failiga, kus sul need pildid sees mida ei tohi kustutada.
ignore.txt peaks ka olema ignore.txt templist.txt ka.
Peaks toimima ka kui Tühikud sees! Kui script asub ka samas kataloogis kus sul need JPG siis pane scriptifail ka ignore.txt listi.
Lisa eelpool toodud Mckevin scriptile
algusesse
mina paneks ka rm "$f" (siis pole vaja "escape spaces")
Kood: |
oIFS=$IFS
IFS=$'\n'
#siin siis script
IFS=$oIFS
|
|
|
|
|
_________________
|
|
|
|
akbgf
Vana Pingviin
Liitunud: 07.10.2009
Postitused: 763
Asukoht: Tõravere
Distributsioon: OpenSUSE, Ubuntu
|
|
daddo kirjutas: | Kas keegi aitaks koostada väikese scripti, ..
Ehk tekstifail nimekirjaga sisaldab failinimesid, mida ei tohi kustutada ja nimekirjast puuduvad failid kõik kustutamisele. |
Ehk on ohutum, kui nihutad skriptiga nimekirjas olevad failid teise kausta ja siis kustutad rahumeeli kogu kausta tühjaks.
Siis saad enne kustutamist teises kaustas veenduda, et ikka kõik soovitud failid on sinna jõudnud.
|
|
|
|
|
|
|
|
mckevin
Pingviini aktivist
Vanus: 35
Liitunud: 02.05.2007
Postitused: 121
Asukoht: tallinn
Distributsioon: Arch Linux x86_64
|
|
õige jah turvalisem oleks panna * asemel *.JPG või IMG*.JPG, muidu kustutab kõik ära tühiku probleem on lahedatud kui $f asemele panna "$f", väike näpukas
|
|
|
|
|
|
|
|
|