/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Et script der bruger informationer fra fil~
Fra : Lars Stokholm


Dato : 09-04-07 15:52

Hej folkens.

Jeg skal have lavet et script, der kan hjælpe mig med at klippe
og komprimere en bunke videoklip med transcode.

Jeg havde tænkt mig at give filnavne i stil med:

Grisen flyver[127-2230].mod
Marie flyver[0-470].mod

Som alle ligger i samme mappe. Scriptet skal så ende med at køre):

transcode -i Grisen flyver[127-2230].mod
-o Grisen flyver.avi
-y xvid
-J cut=127-2230
transcode -i Marie flyver[0-470].mod
-o Marie flyver.avi
-y xvid
-J cut=0-470

Jeg skal altså have hevet nogle informationer ud af filnavnene,
som jeg kan sende videre til transcode. Hvordan gør jeg det?
Helst i (c)sh.

 
 
Dennis Hansen (09-04-2007)
Kommentar
Fra : Dennis Hansen


Dato : 09-04-07 17:56

Lars Stokholm skrev Den. 09-04-2007 16:51:
Hej,

> Jeg skal have lavet et script, der kan hjælpe mig med at klippe og
> komprimere en bunke videoklip med transcode.
>
> Jeg havde tænkt mig at give filnavne i stil med:
>
> Grisen flyver[127-2230].mod
> Marie flyver[0-470].mod

CUT

> Jeg skal altså have hevet nogle informationer ud af filnavnene, som
> jeg kan sende videre til transcode. Hvordan gør jeg det? Helst i
> (c)sh.


Der er sikkert en ekspert eller to, der kan noget smart med sed, der
kan gøre dette meget pænere, og det vil jeg meget gerne se,
men jeg ville hakke mig igennem med

#!/bin/sh
DIR="$1"
for i in "$DIR"/*.mod; do
INFILE=$(basename "$i")
BEFORE=$(echo "$INFILE" | cut -f1 -d '[')
CUTPOINTS=$(echo "$INFILE" | cut -f2 -d '[' | cut -f1 -d ']')
echo "transcode -i \"$i\"
-o \"$BEFORE.avi\"
-y xvid
-J cut=$CUTPOINTS"
done

Det burde virke langt hen af vejen.
Hvis du allerede nu kan undgå mellemrum i filnavne, så er det nok en
god idé.

--
Mvh
Dennis Hansen

Lars Stokholm (09-04-2007)
Kommentar
Fra : Lars Stokholm


Dato : 09-04-07 21:04

On 2007-04-09, Dennis Hansen <dennis@badabum.invalid> wrote:
> #!/bin/sh
> DIR="$1"
> for i in "$DIR"/*.mod; do
> INFILE=$(basename "$i")
> BEFORE=$(echo "$INFILE" | cut -f1 -d '[')
> CUTPOINTS=$(echo "$INFILE" | cut -f2 -d '[' | cut -f1 -d ']')
> echo "transcode -i \"$i\"
> -o \"$BEFORE.avi\"
> -y xvid
> -J cut=$CUTPOINTS"
> done
>
> Det burde virke langt hen af vejen.

Mange tak. Man skal jo sætte sit eget præg, så det blev til:

#!/bin/sh
for INFILE in *.[mM][oO][dD]; do
BASENAME=`echo $INFILE | cut -f1 -d '['`
RANGE=`echo $INFILE | cut -f2 -d '[' | cut -f1 -d ']'`
transcode -i "$INFILE"\
-o "$BASENAME".avi\
-y xvid\
--export_asr 3\
-Z 384x216\
-w 600\
-J cut=$RANGE
done

Er der forskel på HEJ=`echo hej` og HEJ=$(echo hej)?

> Hvis du allerede nu kan undgå mellemrum i filnavne, så er det nok en
> god idé.

Dét er der nu ingen problemer med.

Mikael W. Bertelsen (09-04-2007)
Kommentar
Fra : Mikael W. Bertelsen


Dato : 09-04-07 21:55

On Mon, 09 Apr 2007 20:04:23 +0000, Lars Stokholm wrote:

> Er der forskel på HEJ=`echo hej` og HEJ=$(echo hej)?

Nej, og så alligevel...
Nogle browsere kan ikke vise "`" korrekt, så hvis scriptet bliver lagt
ud på en hjemmeside, så vil det ikke virke hvis det bliver copy/pastet.

Personligt synes jeg HEJ=$(echo hej) er mere læsbart...

/Mikael

Kent Friis (09-04-2007)
Kommentar
Fra : Kent Friis


Dato : 09-04-07 23:08

Den Mon, 09 Apr 2007 22:54:44 +0200 skrev Mikael W. Bertelsen:
> On Mon, 09 Apr 2007 20:04:23 +0000, Lars Stokholm wrote:
>
>> Er der forskel på HEJ=`echo hej` og HEJ=$(echo hej)?
>
> Nej, og så alligevel...
> Nogle browsere kan ikke vise "`" korrekt, så hvis scriptet bliver lagt
> ud på en hjemmeside, så vil det ikke virke hvis det bliver copy/pastet.
>
> Personligt synes jeg HEJ=$(echo hej) er mere læsbart...

Og en ting mere:

Hej=$(echo $(echo hej))

Lav lige den med `

Mvh
Kent
--
"So there I was surrounded by all these scary creatures
They were even scarier than what Microsoft call features"
- C64Mafia: Forbidden Forest (Don't Go Walking Slow).

Klaus Ellegaard (09-04-2007)
Kommentar
Fra : Klaus Ellegaard


Dato : 09-04-07 23:21

Kent Friis <nospam@nospam.invalid> writes:

>Hej=$(echo $(echo hej))

>Lav lige den med `

temp=`echo hej` ; Hej=`echo $temp`

....eller lettere reduceret: Hej=hej



Mvh.
   Klaus.

Christian E. Lysel (10-04-2007)
Kommentar
Fra : Christian E. Lysel


Dato : 10-04-07 10:59

On Mon, 2007-04-09 at 22:07 +0000, Kent Friis wrote:
> Og en ting mere:
>
> Hej=$(echo $(echo hej))
>
> Lav lige den med `

Ok

Hej=`echo ``echo hej`` `



Christian E. Lysel (10-04-2007)
Kommentar
Fra : Christian E. Lysel


Dato : 10-04-07 11:23

On Tue, 2007-04-10 at 11:59 +0200, Christian E. Lysel wrote:
> On Mon, 2007-04-09 at 22:07 +0000, Kent Friis wrote:
> > Og en ting mere:
> >
> > Hej=$(echo $(echo hej))
> >
> > Lav lige den med `
>
> Ok
>
> Hej=`echo ``echo hej`` `

Dejligt eksempel, ovenstående er fuldstændig forkert, men giver det
rigtige resultat.

Man kunne også skrive:

Hej=`echo ` `echo hej` ` `

Mindst lige så forkert, dog igen med det rigtige resultat.


Følgende er derimod rigtigt:

Hej=`echo \`echo hej\` `


Men det bliver ikke kønt ved flere niveaer:

echo `ls \`echo \`\`echo 2\`\` \`\`echo 2\`\` \` `



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste