fietser schreef: ↑do apr 09, 2020 1:09 pm
Leuk dat bash scripting.
Ik moet nog veel leren zie ik weer.
Voorlopig even niet de dagen worden weer langer.
Groet.
Extra veel tijd dus!.
Ik gebruik steeds meer. Voor de iets lastigere dingen natuurlijk de godentaal Perl.
Maar heb een hoop standaardscriptjes.
En heb bv alle bestanden bepaalde directories met uid i, gid j omgezet naar uid x en gid y. Zodat de rest wel de oorspronkelijke uid en gid behield.
Deed ik met find en
xargs dacht ik.
Verder als ik een directory vol met rar's heb, of bv zips.
De "" indien de bestandsnamen spaties en andere speciale tekens bevatten.
Zitten de bestanden niet in een subdir dan gebruik ik dit:
Code: Selecteer alles
for i in *.zip; do 7z x -o`echo "$i" |sed s/\.zip// ` "$i"; done
iswrong kan het vast beter, maar ik vind het goed genoeg.
Wat ik dan wel weer in perl geschreven heb is een programma om bepaalde (delen van) bestandsnamen te reversen.
Kwam laatst wel een bug tegen, dus moet ik nog even repareren.
Deze gebruikte ik voor dat omzetten van uid en gid.:
Had ik nodig voor m'n synology nas, Daar kun je niet zomaar de uid en gid van een user aanpassen (ivm met nfs), dus dan maar de user en gid op m'n pc aangepast. Geen idee hoe dat mapping van nfsv4 werkt. Synology is sowieso niet voor 'power users'. sabnzbd heeft een rare uid en gid, en geeft de bestanden 777 rechten.
Nu kun je scripts in sabnzbd schrijven, maar die hebben dan waarschijnlijk weer niet genoeg rechten. Een bashscript met cronjob kan bv weer wel. Of een 'watcher' laten draaien.
In the end gebruik ik bash eigenlijk enkel voor '1 lijnige' scripts, daarna schakel ik al snel om naar perl.
Dit gebruikte ik eerst om die bestandsnamen aan te passen (en dan ook voor de srt).
Code: Selecteer alles
perl -e 'use 5.010; @bla=`ls *.mkv`; foreach(@bla){chomp $_ ;@var = split(/\.(\w+)$/,$_,2); system("mv \"$_\" \"" . reverse($var[0]) . "\".\"$var[1]\"\n");}'
Nu gewoon een scriptje van gemaakt waarbij je * als argument aangeeft en hij enkel .srt en .mkv aanpast. Enige bug is dat hij ook de naam van een directory die in die dir zit omkeert qua naam, dat moet niet.
iswrong kan bovenstaande vast wel even in een bash regeltje om schrijven
.
Ik vind hem wel briljant.. use 5.010 is nodig, ik gebruik `` én ik gebruik system.