ycc skrev:
Vid sådana här situationer kan Linux kan vara synnerligen användbart

Jag är lite rostig på att skriva skript, men nedanstående försök till skript kopierar i alla fall filerna i mappen till filnamn med ordningsnummer. Skript startas med ./namnet-på-skriptfilen. Man måste också först skriva "chmod +x namnet-på-skriptfilen" för att den skall bli exekverbar.
Kod: Markera allt
#!/bin/bash
count=0
for file in `ls` ; do
cp $file $count
count=`expr $count + 1`
done
Det går naturligtvis att starta räknaren på 312 eller ändra lite i skriptet så det lägger till en oföränderlig del till filnamnet.
Tackar!
En följdfråga bara: Kan ett skript ta argument? Hur skriver man i så fall skriptet så att man kan använda dessa argument?
Bara för att visa lite vad jag är ute efter, så kommer här ett exempel som är i närheten av vad jag är ute efter:
I en mapp har jag en mängd filer av samma filtyp. Spelar ju ingen roll vilken typ, men säg jpg.
Dessa är namngivna på ett enhetligt sätt, i detta exempel kan vi säga att de heter "Nummer ###.jpg" för att inte krångla till det i onödan.
Då och då kommer nya bilder till mappen, kopierade från en digitalkamera. Dessa filer har då givetvis andra namn, typ DSC07039.JPG. I detta fall heter den sista ordinarie bildens "Nummer 311.jpg" och jag önskar fylla på där. Det är dock inte säkert att alla nummer finns med, så därför måste jag kunna styra det hela lite manuellt. Anta exempelvis att jag inte vill att någon fil ska heta "Nummer 317.jpg", så vill jag kunna köra ett skript på följande sätt (vilket är förklaringen till att det skulle vara praktiskt om skriptet kan ta argument):
./MittSkript DSC07039 DSC07044 312
Det är inte heller säkert att alla filer mellan DSC07039.JPG och DSC07044.JPG existerar, så vad ovanstående försök till kommando skulle innebära i mitt fall är följande:
"Byt namn på alla filer som heter DSC07039.JPG upp till DSC07044.JPG så att första filen heter Nummer 312.jpg". På så vis kan jag därefter fortsätta med fler filer med exempelvis:
./MittSkript DSC07046 DSC07099 325
Okej, nu ber jag ingen att skriva ett färdigt skript åt mig. Exemplen var enbart för att visa principen för vad jag är ute efter. Några enkla ledtrådar så är jag förmodligen igång på egen hand och kan troligen få såpass stor förståelse för hur skripten fungerar att jag kan göra nya när nya behov uppstår. I detta fallet gällde bara frågan om och hur man kan få skriptet att acceptera argument från användaren, ungefär som man kan i C och förmodligen alla andra programspråk.
Hm... i och för sig så borde jag ju kunna knåpa ihop något i C annars. Har ju trots allt läst C på högskola, även om det var 1986 ungefär... =P Men det var inte i Unix utan i Primos - operativsystemet som de flesta glömt idag. När skolan hade bytt till Unix hade jag redan slutat, men jag var ändå där ibland och försökte få klart examensjobbet och några andra smågrejer och då fick man ju försöka förstå Unix så gott det gick. Det blev mycket MUD och IRC på den tiden också. Två fina skandinaviska påhitt (MUD från Lars Pettersson i Göteborg och IRC nånstans i Finland om jag inte minns fel).
Försök nu filtera mitt pladder från den egentliga frågan om ni kan...
Och tack för idén med skript! Att jag inte tänkte på det... Man är ju förstörd av Windows kanske, man är van vid att få allt färdigt. Vad man än vill ha så har någon annan redan skapat ett gratisprogram för det... Men i Linux har vi ju rätt kraftfulla textkommandon, så vad jag förstått så kan jag exempelvis ersätta min användning av ett program jag har för säkerhetskopiering i Windows (Cobian Backup) med ett enkelt cp i terminalen, med lite flaggor som ser till att bara ändrade filer kopieras och så vidare. Det kan man i och för sig i DOS också, men när man körde windows drog man sig ju för att använda kommandoprompten, kommer inte riktigt ihåg varför. För att den var värdelös kanske, exempelvis när man skulle ange långa filnamn, exempelvis MinFil~1.txt om filen egentligen hette MinFilÄrSåHimlaIntressant.txt. Nu störs jag bara lite av det faktum (?) att jag måste skriva en \ framför varje mellanslag i ett filnamn, eller kan jag ange filnamnet som det är om jag innesluter det i citattecken?
Kan jag exempelvis skriva cd "/home/guraknugen/Min alldeles speciella mapp" istället för cd /home/guraknugen/Min\ alldeles\ speciella\ mapp? Fast i och för sig spelar det ingen roll, för oftast använder man ju ändå TAB-tangenten för att få ut sina långa mappnamn i text och då blir det ju ändå som det blir...
Vänliga hälsningar
Johnny Andersson