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.
skriptiga kataloogist failide kustutamine ...
Moderaator: Moderaatorid
midagi nii peaks olema
Kood: Vali kõik
#!/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
donePõ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:mckevin kirjutas:Kood: Vali kõik
#!/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
rm: `IMG_0068' ei saa kustutada: No such file or directory
rm: `(koopia).jpg' ei saa kustutada: No such file or directory
Pakkuks ka omalt poolt pikema variandi:
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: Vali kõik
#!/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 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: Vali kõik
oIFS=$IFS
IFS=$'\n'
#siin siis script
IFS=$oIFS

Re: skriptiga kataloogist failide kustutamine ...
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.


