DJViking Skrevet 7. november 2011 Del Skrevet 7. november 2011 (endret) Prøvde meg på mitt første script i dag, men det ikke ikke som forventet. Formålet med scriptet er å kjøre en kommando for alle visse filer i en katalog. Forslag1: #!/bin/bash FOLDER=${1} for I in `find "${FOLDER}" -name "*.ape"` do ffmpeg -i "${FOLDER}"/"${I}" -acodec flac "${FOLDER}"/"${I}".flac done exit Forslag2: cd "$1" find -depth -print0 | while read -d \0' filename; do filename="${filename##*/}" ffmpeg -i "${filename}" -acodec flac "${filename}".flac done exit Noen som har en anelse hvorfor disse feilet? Forslag1 bryter opp alle filnavnene i stykker Forslag2 finner alle filene, men kjøringen går galt. Endret 7. november 2011 av DJViking Lenke til kommentar
Sokkalf™ Skrevet 7. november 2011 Del Skrevet 7. november 2011 Er vel ikke nødvendig å bruke find heller. cd ${1} for i in `ls *.ape`; do ...kode... done Lenke til kommentar
DJViking Skrevet 7. november 2011 Forfatter Del Skrevet 7. november 2011 (endret) Er vel ikke nødvendig å bruke find heller. cd ${1} for i in `ls *.ape`; do ...kode... done Vil den vente med neste løkke til etter kommandoen har kjørt? Prøvde ut din løsning først ved å skrive ut filene for i in `ls *.ape`; do echo "${FOLDER}"/"${i}" #ffmpeg -i "${FOLDER}"/"${i}" -acodec flac "${FOLDER}"/"${i}".flac done Den feiler på samme måte som mitt første forslag. Utskriften av filnavnene blir slik Beethoven + Karajan - 08. Symphony no. 7 in A major, op.92; Allegro con brio.ape Endret 7. november 2011 av DJViking Lenke til kommentar
Sokkalf™ Skrevet 7. november 2011 Del Skrevet 7. november 2011 Kommer rundt problemet med et par ". for i in "`ls *.ape`"; do Lenke til kommentar
DJViking Skrevet 7. november 2011 Forfatter Del Skrevet 7. november 2011 (endret) Kommer rundt problemet med et par ". for i in "`ls *.ape`"; do Det gikk. Hva er det med ; før do? Det virker med og uten den. Tror jeg må sette meg ned å lese en script-bok. Edit: Den prøver å kjøre kommandoen med alle filnavnene i èn parameter og ikke x antall ganger for x antall filer. Ser ikke ut som for-løkken virker. Innholdet blir bare kjørt en gang og parameteren fra ls blir en eneste lang streng med alle filnavnene. Endret 7. november 2011 av DJViking Lenke til kommentar
Sokkalf™ Skrevet 7. november 2011 Del Skrevet 7. november 2011 (endret) Hm, ikke godt å si, jeg gjør sånn av gammel vane. Står følgende her: If do is on same line as for, there needs to be a semicolon after list. Edit: det har du jaggu rett i. Hmm. Jeg har snekret noe lignende for konvertering fra flac til mp3 før, skal grave frem og se hva jeg gjorde der. Endret 7. november 2011 av Sokkalf™ Lenke til kommentar
Sokkalf™ Skrevet 7. november 2011 Del Skrevet 7. november 2011 Nå surrer jeg fælt her, men tror du var inne på noe i ditt alt. #2. Hva med: ls *.ape | while read filename; do ...kode... done ? Lenke til kommentar
Terrasque Skrevet 7. november 2011 Del Skrevet 7. november 2011 (endret) find . -name "*.ape" --exec echo File is '{}' some more text ';' for i in $(find workspace -name "*.xml"); do echo File $i; done Endret 7. november 2011 av Terrasque Lenke til kommentar
DJViking Skrevet 7. november 2011 Forfatter Del Skrevet 7. november 2011 (endret) Nå surrer jeg fælt her, men tror du var inne på noe i ditt alt. #2. Hva med: ls *.ape | while read filename; do ...kode... done ? Det går bedre, men resultatet er det samme som mitt forslag2. Når den kjører ffmpeg så går den helt bananas og begynner å spytte ut masse HEX. Et lite utdrag fra kjøringen: Input #0, ape, from 'Beethoven + Karajan - 01. Symphony no. 2 in D major, op.36; Adagio - Allegro con brio - Symphony.ape': Metadata: Track : 1 Genre : Classical Artist : Beethoven + Karajan Album : Symphonies Nos. 2 & 7 Title : Symphony no. 2 in D major, op.36; Adagio - Allegro con brio - Symphony Duration: 00:10:21.19, start: 0.000000, bitrate: 652 kb/s Stream #0:0: Audio: ape (APE / 0x20455041), 44100 Hz, stereo, s16 Output #0, flac, to 'Beethoven + Karajan - 01. Symphony no. 2 in D major, op.36; Adagio - Allegro con brio - Symphony.ape.flac': Metadata: TRACKNUMBER : 1 Genre : Classical Artist : Beethoven + Karajan Album : Symphonies Nos. 2 & 7 Title : Symphony no. 2 in D major, op.36; Adagio - Allegro con brio - Symphony encoder : Lavf53.18.0 Stream #0:0: Audio: flac, 44100 Hz, stereo, s16, 128 kb/s Stream mapping: Stream #0.0 -> #0.0 Press [q] to stop, [?] for help Multiple frames in a packet from stream 0 stream #0: keyframe=1 duration=0.104 dts=6.687 pts=6.687 size=122672 stream #0: keyframe=1 duration=0.104 dts=8.359 pts=8.359 size=89612 stream #0: keyframe=1 duration=0.104 dts=10.031 pts=10.031 size=89180 ... Multiple frames in a packet from stream 0 Multiple frames in a packet from stream 0 Multiple frames in a packet from stream 0 Multiple frames in a packet from stream 0 Multiple frames in a packet from stream 0 Multiple frames in a packet from stream 0 Multiple frames in a packet from stream 0 Multiple frames in a packet from stream 0 Multiple frames in a packet from stream 0 Multiple frames in a packet from stream 0 Multiple frames in a packet from stream 0 Multiple frames in a packet from stream 0 Multiple frames in a packet from stream 0 Multiple frames in a packet from stream 0 Multiple frames in a packet from stream 0 stream #0: keyframe=1 duration=0.104 dts=30.093 pts=30.093 size=124836 ... stream #0: keyframe=1 duration=0.104 dts=50.155 pts=50.155 size=98404 00000000 00 20 01 00 00 00 00 00 c3 e2 f8 59 1a 45 14 00 . .........Y.E.. 00000010 d0 11 df 2e 78 6a e9 1a 5f 91 03 9e 36 8d ed 37 ....xj.._...6..7 00000020 08 e3 f0 2a f3 76 47 39 7a b7 26 35 76 46 55 ee ...*.vG9z.&5vFU. 00000030 4d ae 53 a3 3f 80 db 6a f1 f1 1c 27 2b 14 e2 2b M.S.?..j...'+..+ 00000040 73 54 7c ee d4 e7 9e 06 41 54 13 3b ff 2a 5d f0 sT|.....AT.;.*]. Slik skal det være når jeg kjører manuelt: Input #0, ape, from 'Beethoven + Karajan - 01. Symphony no. 2 in D major, op.36; Adagio - Allegro con brio - Symphony.ape': Metadata: Track : 1 Genre : Classical Artist : Beethoven + Karajan Album : Symphonies Nos. 2 & 7 Title : Symphony no. 2 in D major, op.36; Adagio - Allegro con brio - Symphony Duration: 00:10:21.19, start: 0.000000, bitrate: 652 kb/s Stream #0:0: Audio: ape (APE / 0x20455041), 44100 Hz, stereo, s16 Output #0, flac, to 'Beethoven + Karajan - 01. Symphony no. 2 in D major, op.36; Adagio - Allegro con brio - Symphony.flac': Metadata: TRACKNUMBER : 1 Genre : Classical Artist : Beethoven + Karajan Album : Symphonies Nos. 2 & 7 Title : Symphony no. 2 in D major, op.36; Adagio - Allegro con brio - Symphony encoder : Lavf53.18.0 Stream #0:0: Audio: flac, 44100 Hz, stereo, s16, 128 kb/s Stream mapping: Stream #0.0 -> #0.0 Press [q] to stop, [?] for help Multiple frames in a packet from stream 0 size= 50897kB time=00:10:21.29 bitrate= 671.1kbits/s video:0kB audio:50889kB global headers:0kB muxing overhead 0.016173% Endret 7. november 2011 av DJViking Lenke til kommentar
Sokkalf™ Skrevet 7. november 2011 Del Skrevet 7. november 2011 Funker ffmpeg hvis du kjører tilsvarende kommando i shellet med filnavnene fylt ut manuelt, da? Lenke til kommentar
DJViking Skrevet 7. november 2011 Forfatter Del Skrevet 7. november 2011 (endret) find . -name "*.ape" --exec echo File is '{}' some more text ';' for i in $(find workspace -name "*.xml"); do echo File $i; done Følgende ville ikke kjøre: find . -name "*.ape" -exec echo File is '{}' some more text ';' for i in $(find workspace -name "*.xml"); do echo File $i; done Tilpasset denne til følgende og det virket fint. find . -name "*.ape" -exec ffmpeg -i '{}' -acodec flac '{}'.flac ';' Funker ffmpeg hvis du kjører tilsvarende kommando i shellet med filnavnene fylt ut manuelt, da? Det virker ja. Endret 7. november 2011 av DJViking Lenke til kommentar
Terrasque Skrevet 7. november 2011 Del Skrevet 7. november 2011 For referanse, en annen approach: for x in *.xml; do echo File $x; done Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå