Re: [rlug] BASH help
On Thursday 25 December 2008 14:19:03 Petru Ratiu wrote: Ca sa caut nod in papura, ls -1 iar e degeaba, pentru ca daca stdout nu e un terminal, comportamentul default e un fisier pe linie oricum. Evident ca se stie ca cea mai buna solutie e find -print0 | xargs -0 Multumesc pt. -print0 | xargs -0 Stiam eu ca e ceva foarte destept, dar n-am avut timp pana acum sa ma uit in manual. Foloseam while read. Am aflat cu ocazia asta ca find are si optiune -delete, foarte utila. ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] BASH help
Silviu Marin-Caea wrote: Multumesc pt. -print0 | xargs -0 Stiam eu ca e ceva foarte destept, dar n-am avut timp pana acum sa ma uit in manual. Foloseam while read. Am aflat cu ocazia asta ca find are si optiune -delete, foarte utila. find mai are o optiune foarte utila pe nume exec: find *.avi -exec mencoder -tralala {} \; -- Cioby ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] BASH help
find mai are o optiune foarte utila pe nume exec: find *.avi -exec mencoder -tralala {} \; Da, dar in anumite conditii e mai rapid sa parsezi prin xargs cu -i decat -exec direct... (testat) :) -- Claudiu Nicolaie CISMARU GNU GPG Key: http://claudiu.targujiu.net/key.gpg T: 0755135455 E: clau...@virtuamagic.com, claudiu.cism...@gmail.com signature.asc Description: This is a digitally signed message part. ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] BASH help
2008/12/25 Tarhon-Onu Victor mi...@iasi.rdsnet.ro: On Sat, 20 Dec 2008, Petru Ratiu wrote: Solutiile pe care le vad acum sunt fie redefinirea IFS, fie find | while read , fie find -print0 | xargs -0 , fie alte solutii non-bash. PS: `ls *.avi` e din categoria useless use of cat, *.avi era fix la fel (caz in care in scriptul de mai sus apare o surpiza placuta pe care n-o desconspir acum). Desi devenim offtopic, aici ar fi mai multe de spus. Daca lista de fisiere e suficient de lunga, for-ul ala oricum l-ai face o sa plesneasca. La for file in *.avi te poti trezi ca lista e prea lunga, sau la for file in $(ls -1 *.avi) te poti trezi ca-ti inghite bash-ul o droaie de ram, iar daca fisierele contin $IFS o sa te trezesti ca la mencoder ajung ca argumente bucati din numele fisierelor. Solutiile ideale aici atit dpdv. al eficientei cit si a scalabilitatii cred ca ar fi: 1. find . -name \*.avi -exec mencorer tralala sau find -print | xargs sau, mai putin ideal: 2. ls -1 *.avi | while read FISIER; do treaba_cu_mencoderu' $FISIER; done; Solutia 2 e si ea vulnerabila la problema cu lista suficient de lunga, insa daca e sub pragul limita dar lista e suficient de mare macar nu dai in problema cu memoria. Ca sa caut nod in papura, ls -1 iar e degeaba, pentru ca daca stdout nu e un terminal, comportamentul default e un fisier pe linie oricum. Evident ca se stie ca cea mai buna solutie e find -print0 | xargs -0 (si pentru comenzi mai complicate, xargs mai stie si de -L1 sau -I etc.). Merry xargs-mas! -- Unix was written to play Spacewar and cheat at Scrabble, but Linux was created merely to prove that it booted. - a.s.r. quote ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] BASH help
On Sat, 20 Dec 2008, Petru Ratiu wrote: Solutiile pe care le vad acum sunt fie redefinirea IFS, fie find | while read , fie find -print0 | xargs -0 , fie alte solutii non-bash. PS: `ls *.avi` e din categoria useless use of cat, *.avi era fix la fel (caz in care in scriptul de mai sus apare o surpiza placuta pe care n-o desconspir acum). Desi devenim offtopic, aici ar fi mai multe de spus. Daca lista de fisiere e suficient de lunga, for-ul ala oricum l-ai face o sa plesneasca. La for file in *.avi te poti trezi ca lista e prea lunga, sau la for file in $(ls -1 *.avi) te poti trezi ca-ti inghite bash-ul o droaie de ram, iar daca fisierele contin $IFS o sa te trezesti ca la mencoder ajung ca argumente bucati din numele fisierelor. Solutiile ideale aici atit dpdv. al eficientei cit si a scalabilitatii cred ca ar fi: 1. find . -name \*.avi -exec mencorer tralala sau find -print | xargs sau, mai putin ideal: 2. ls -1 *.avi | while read FISIER; do treaba_cu_mencoderu' $FISIER; done; Solutia 2 e si ea vulnerabila la problema cu lista suficient de lunga, insa daca e sub pragul limita dar lista e suficient de mare macar nu dai in problema cu memoria. -- Consumul excesiv de ckt te poate transforma in manelist sau parlamentar. ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] BASH help
ghrt wrote: salut am scris un programel for FISIER in `ls *.avi` do mencoder $FISIER -sub $FISIER.srt -o ./P2000/$FISIER -oac pcm -ovc lavc -lavcopts vcodec=mjpeg done Cauti ceva de genul ? while read line do echo do smth with; echo $value; done myfile (e din burta) ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] BASH help
Eu as sugera sa foloseasca find + xargs, care aditional are si avantajul ca merge pentru oricit de multe fisiere. ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] BASH help
Petru Ratiu wrote: On Sat, Dec 20, 2008 at 02:46, lonely wolf wo...@pcnet.ro wrote: On 12/20/2008 02:30 AM, ghrt wrote: salut am scris un programel for FISIER in `ls *.avi` do mencoder $FISIER -sub $FISIER.srt -o ./P2000/$FISIER -oac pcm -ovc lavc -lavcopts vcodec=mjpeg done mencoder $FISIER -sub $FISIER.srt -o ./P2000/$FISIER -oac pcm -ovc lavc -lavcopts vcodec=mjpeg N-o sa mearga pentru ca for sparge tot dupa $IFS. Solutiile pe care le vad acum sunt fie redefinirea IFS, fie find | while read , fie find -print0 | xargs -0 , fie alte solutii non-bash. PS: `ls *.avi` e din categoria useless use of cat, *.avi era fix la fel (caz in care in scriptul de mai sus apare o surpiza placuta pe care n-o desconspir acum). mersi! l-am facut sa mearga, si am folosit si parameter substitution din celalalt thread! for a in *.avi ; do mencoder $a -sub ${a%avi}srt -o ./P2000/$a -oac pcm -ovc lavc -lavcopts vcodec=mjpeg ; done --ghrt PS: pentru cei interesati este vorba de convertirea intr-un format cunoscut si redabil (ca si procesor) de un device, Epson P-2000. ma pregatesc de vacanta de Craciun :) ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
[rlug] BASH help
salut am scris un programel for FISIER in `ls *.avi` do mencoder $FISIER -sub $FISIER.srt -o ./P2000/$FISIER -oac pcm -ovc lavc -lavcopts vcodec=mjpeg done daca insa fisierele au spatii in denumire toata treaba nu mai merge deoarece valorile atribuite lui FISIER sunt delimitate de spatii. cum fac sa mearga si in situatia asta? este foarte enervant sa tot elimin spatiile. (am incercat ls -Q dar nu a mers nici asta.) -- tia ghrt ps: exista instalat manualul de BASH, dar e prea mare :) ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] BASH help
On 12/20/2008 02:30 AM, ghrt wrote: salut am scris un programel for FISIER in `ls *.avi` do mencoder $FISIER -sub $FISIER.srt -o ./P2000/$FISIER -oac pcm -ovc lavc -lavcopts vcodec=mjpeg done mencoder $FISIER -sub $FISIER.srt -o ./P2000/$FISIER -oac pcm -ovc lavc -lavcopts vcodec=mjpeg -- Voodoo sysadminning -- waving a rubber chicken at a problem -- is only entertaining to watch and NOT to experience, and is only effective to repair a problem if the sysadmin is extremely lucky. ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] BASH help
On Sat, Dec 20, 2008 at 02:46, lonely wolf wo...@pcnet.ro wrote: On 12/20/2008 02:30 AM, ghrt wrote: salut am scris un programel for FISIER in `ls *.avi` do mencoder $FISIER -sub $FISIER.srt -o ./P2000/$FISIER -oac pcm -ovc lavc -lavcopts vcodec=mjpeg done mencoder $FISIER -sub $FISIER.srt -o ./P2000/$FISIER -oac pcm -ovc lavc -lavcopts vcodec=mjpeg N-o sa mearga pentru ca for sparge tot dupa $IFS. Solutiile pe care le vad acum sunt fie redefinirea IFS, fie find | while read , fie find -print0 | xargs -0 , fie alte solutii non-bash. PS: `ls *.avi` e din categoria useless use of cat, *.avi era fix la fel (caz in care in scriptul de mai sus apare o surpiza placuta pe care n-o desconspir acum). -- Unix was written to play Spacewar and cheat at Scrabble, but Linux was created merely to prove that it booted. - a.s.r. quote ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] BASH help
2008/12/20 ghrt g...@evonet.ro: salut am scris un programel for FISIER in `ls *.avi` /bin/ls -1 *.avi | while read FISIER do mencoder $FISIER -sub $FISIER.srt -o ./P2000/$FISIER -oac pcm -ovc lavc -lavcopts vcodec=mjpeg #aici faci cum a sugerat wolfy, pui ghilimele done HTH Mures -- ...and justice for all... ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
RE: [rlug] BASH help
Tot nu stiu daca ajunge, parca in forma asta face foru split pe ws-uri Garantat merge cu for i in *.avi, binenteles cum zicea si Wolfy cu ghilimelele de rigoare -Original Message- From: lonely wolf wo...@pcnet.ro Sent: 20 decembrie 2008 02:46 To: Romanian Linux Users Group rlug@lists.lug.ro Subject: Re: [rlug] BASH help On 12/20/2008 02:30 AM, ghrt wrote: salut am scris un programel for FISIER in `ls *.avi` do mencoder $FISIER -sub $FISIER.srt -o ./P2000/$FISIER -oac pcm -ovc lavc -lavcopts vcodec=mjpeg done mencoder $FISIER -sub $FISIER.srt -o ./P2000/$FISIER -oac pcm -ovc lavc -lavcopts vcodec=mjpeg -- Voodoo sysadminning -- waving a rubber chicken at a problem -- is only entertaining to watch and NOT to experience, and is only effective to repair a problem if the sysadmin is extremely lucky. ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug