Na een dat prutsen moet ik dan toch maar de hulp van GoT inroepen. Allereerst maar even het probleem.
Ik heb een linux server waar twee harde schijven inzitten... deze server wordt vooral gebruikt voor het opslaan van films. Nu zit een schijf vol, maar hier staan wel iets van 30 films op. Nieuwe films komen nu op de andere harde schijf terecht.
Om nu makkelijk te kunnen zien welke films ik al heb wil ik symlinks maken op de schijf die niet vol is, naar de filmdirectories op de volle schijf.
Nu zou dit een stukje taart moeten zijn om te maken:
1. Lees de directory namen op de volle schijf in de movies dir
2. ( Kijk of er dode links zijn / nieuwe films zijn bijgekomen )
3. Maak naar iedere directory een link in de movies dir op de lege schijf
Op zich moet dit zo in elkaar te zetten zijn, maar aangezien ik een enorme noob ben op linux gebied zit ik al de hele dag te prutsen. Het probleem zat eerst bij het uitlezen van maar één regel uit een heleboel regels, dit kan ik inmiddels via de commandline mbv sed. Nu wil sed dit echter niet doen in een scriptje, omdat ik daar een $COUNTER tussen ''s heb staan. Ik zal de code even posten:
Hieronder nog even m'n 1e filetje, dat staat vol met zooi, en nuttige commando's, maar die execute dus niet. Misschien leuk om te zien of ik op de goede weg ben?
Nou jah, jullie zien wel dat ik nogal chaotisch aan het werk ben (was) en dat het niet gaat werken. Ik ga er morgen weer mee verder, dus aub geen kant en klaar oplossingen aanleveren (in ieder geval niet zonder SPOILER). Wat ik wel graag zou willen weten is hoe ik de variabele BLAAT zo ver krijg dattie een getal wordt in onderstaande(dat doet hij nu niet omdat hij tussen 's staat, maar zonder die 's doet sed het niet:
Als ik de boel aan de praat heb zal ik het werkende script wel posten.
Ik heb een linux server waar twee harde schijven inzitten... deze server wordt vooral gebruikt voor het opslaan van films. Nu zit een schijf vol, maar hier staan wel iets van 30 films op. Nieuwe films komen nu op de andere harde schijf terecht.
Om nu makkelijk te kunnen zien welke films ik al heb wil ik symlinks maken op de schijf die niet vol is, naar de filmdirectories op de volle schijf.
Nu zou dit een stukje taart moeten zijn om te maken:
1. Lees de directory namen op de volle schijf in de movies dir
2. ( Kijk of er dode links zijn / nieuwe films zijn bijgekomen )
3. Maak naar iedere directory een link in de movies dir op de lege schijf
Op zich moet dit zo in elkaar te zetten zijn, maar aangezien ik een enorme noob ben op linux gebied zit ik al de hele dag te prutsen. Het probleem zat eerst bij het uitlezen van maar één regel uit een heleboel regels, dit kan ik inmiddels via de commandline mbv sed. Nu wil sed dit echter niet doen in een scriptje, omdat ik daar een $COUNTER tussen ''s heb staan. Ik zal de code even posten:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| #!/bin/bash SRCD="/shares/Shares/Video" #de dir die de links levert TGTD="/home/----/scripttest" #de dir waar de links moeten komen te staan COUNTER=$(ls $SRCD | wc -l) #het aantal regels = subdirs in de sourcedir until [ $COUNTER -lt 1 ]; do #echo COUNTER $COUNTER let COUNTER-=1 done #jah het was een heel gekloot om die stomme loop werkend te krijgen BLAAT=4 find $SRCD -maxdepth 1 -mindepth 1 -type d | sed -n '$BLAAT p' # $BLAAT wordt niet vertaald in een getal exit |
Hieronder nog even m'n 1e filetje, dat staat vol met zooi, en nuttige commando's, maar die execute dus niet. Misschien leuk om te zien of ik op de goede weg ben?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| #!/bin/bash SRCD="/shares/Shares/Video" #TGTD="/data/Shares/Video/" TGTD="/home/----/scripttest/" function maaklink { ln -s -f $1 $TGTD$2 } #maaklink $SRCD link #LINES = $(find $TGTD -maxdepth 1 -mindepth 1 -type d) #| wc -l) waarom werkt dit niet? #echo $LINES DIRECTORY="" #COUNTER= ls $SRCD |wc -l dit werkte niet vanwege de spatie :-S COUNTER=10 until [ $COUNTER==1 ]; do #== kentie niet? echo COUNTER $COUNTER # DIRECTORY ='for word in 'find $TGTD -maxdepth 1 -mindepth 1 -type d | sed -n '$COUNTER p'' ; do # bovenstaande klopt nog geen hout van # done' # echo DIRECTORY: $DIRECTORY let COUNTER-=1 # DIRECTORY="" done exit |
Nou jah, jullie zien wel dat ik nogal chaotisch aan het werk ben (was) en dat het niet gaat werken. Ik ga er morgen weer mee verder, dus aub geen kant en klaar oplossingen aanleveren (in ieder geval niet zonder SPOILER). Wat ik wel graag zou willen weten is hoe ik de variabele BLAAT zo ver krijg dattie een getal wordt in onderstaande(dat doet hij nu niet omdat hij tussen 's staat, maar zonder die 's doet sed het niet:
code:
1
| find $SRCD -maxdepth 1 -mindepth 1 -type d | sed -n '$BLAAT p' |
Als ik de boel aan de praat heb zal ik het werkende script wel posten.
[ Voor 5% gewijzigd door Toiletman op 10-08-2004 00:56 ]
Only dead fish go with the flow