Bash rekurzivno putovanje direktorijima
Moderator/ica: Moderatori/ce
Bash rekurzivno putovanje direktorijima
Kako napisat bash skriptu da proputuje direktorije obavi zadatak koji je u skripti i vrati se u dir iz kojeg je pokrenuta??
Darko
Darko
- Cooleech
- Moderator
- Postovi: 7025
- Pridružen/a: 13 stu 2010, 21:12
- Spol: M
- OS: Arch Linux KDE
- Lokacija: /hrvatska/solin/
Re: Bash rekurzivno putovanje direktorijima
Ručno, tipkajući kod. 
Šalu na stranu, što ti skripta treba napraviti u svakom od direktorija? Malo bolje opiši što želiš od nje, nismo vidoviti.
Šalu na stranu, što ti skripta treba napraviti u svakom od direktorija? Malo bolje opiši što želiš od nje, nismo vidoviti.
I've seen some idiots back in my time, but you man... you're special!Vl@do je napisao/la:Arch imaš upravo zato da uštediš na vremenu. Nemaš nikakvih problema s instalacijama, kompajliranjem i ostalim. Imaš jednostavno funkcionalan i stabilan, uvijek najsvježiji OS, a osim toga je sexy i cool do neba.
- 4ndY
- Moderator
- Postovi: 4060
- Pridružen/a: 15 svi 2008, 18:05
- Spol: M
- OS: Fedora/KDE
- Lokacija: Hamburg, DE
- Kontakt:
Re: Bash rekurzivno putovanje direktorijima
Rekurzivno "hodanje" po svim datotekama svih poddirektorija možeš dobiti s find i xargsdemaxfa je napisao/la:Kako napisat bash skriptu da proputuje direktorije obavi zadatak koji je u skripti i vrati se u dir iz kojeg je pokrenuta??
Darko
Kod: Označi sve
find . -type f | xargs "naredba"
Kod: Označi sve
find . -type f | xargs grep "GPL"Kod: Označi sve
grep -r "GPL" * A neutron walks into a bar; he asks the bartender, 'How much for a beer?' The bartender looks at him, and says 'For you, no charge.'
Re: Bash rekurzivno putovanje direktorijima
Mora izbrisat ove znakove iz naziva mht mhtml datoteka | : ? našao sam riješenje na grupama za skriptu ali do sad sam je copy/pastao u svaki dir i pod dir pa pokretao rućno sad bih da u glavnom dir izdam naredbu a da ona sama proputuje dir i da napravi što treba.
Kod: Označi sve
#!/bin/bash
# renames.sh
# basic file renamer
for i in *.mht
do
j=`echo $i | sed 's/|/ /g' | sed 's/:/ /g' | sed 's/?//g' | sed 's/"//g'`
mv "$i" "$j"
done- 4ndY
- Moderator
- Postovi: 4060
- Pridružen/a: 15 svi 2008, 18:05
- Spol: M
- OS: Fedora/KDE
- Lokacija: Hamburg, DE
- Kontakt:
Re: Bash rekurzivno putovanje direktorijima
Evo jedan oneliner
Objašnjenje:
* find nam traži sve datoteke ( -type f ) s nastavkom .mht ili ( -o ) .mhtml
* xargsom nađeno findom supstituiramo varijablom item ( -I item )
* sh-om izvršavamo dvije naredbe, prva je jednostavno ispis f-a ( echo item ), a druga je sed-an item ( echo item | sed "s/[:?|]//g" )
* šaljemo dakle dva stringa odvojena razmakom ( običan item i sed-an item ) zadnjem xargsu koji prima dva argumenta za mv
Sed: "s/[:?|]//g": s - "search and replace", [:?|] skup znakova, g - sva pojavljivanja u liniji
Kod: Označi sve
find . -type f -name "*.mhtml" -o -type f -name "*.mht" | xargs -I item sh -c '{ echo item; echo item | sed "s/[:?|]//g"; }' | xargs -n2 mv
* find nam traži sve datoteke ( -type f ) s nastavkom .mht ili ( -o ) .mhtml
* xargsom nađeno findom supstituiramo varijablom item ( -I item )
* sh-om izvršavamo dvije naredbe, prva je jednostavno ispis f-a ( echo item ), a druga je sed-an item ( echo item | sed "s/[:?|]//g" )
* šaljemo dakle dva stringa odvojena razmakom ( običan item i sed-an item ) zadnjem xargsu koji prima dva argumenta za mv
Sed: "s/[:?|]//g": s - "search and replace", [:?|] skup znakova, g - sva pojavljivanja u liniji
Zadnja izmjena: 4ndY, dana/u 23 svi 2013, 14:09, ukupno mijenjano 1 put.
Razlog: Promijenio "f" u "item" da ne bi bilo zabune.
Razlog: Promijenio "f" u "item" da ne bi bilo zabune.
A neutron walks into a bar; he asks the bartender, 'How much for a beer?' The bartender looks at him, and says 'For you, no charge.'
- tomog999
- Postovi: 125
- Pridružen/a: 03 ožu 2011, 18:18
- Spol: M
- OS: mint14Cina/Centos6
- Lokacija: Zagreb
Re: Bash rekurzivno putovanje direktorijima
Možda bi bilo bolje da si stavio neki drugi naziv varijable xargsu umjesto "f",
jer moglo bi se pogrešno zaključiti (mislim na ekipu sa manje iskustva) da "f" od finda i xargsa imaju veze jedno s drugim, tj. da moraju biti isti.
jer moglo bi se pogrešno zaključiti (mislim na ekipu sa manje iskustva) da "f" od finda i xargsa imaju veze jedno s drugim, tj. da moraju biti isti.
To all you "rvacki pravopis" haters, we're gona blow your planet up
we got death star(death star)
and you know that we got it(death star)
Darth Spellingius
we got death star(death star)
and you know that we got it(death star)
Darth Spellingius
- 4ndY
- Moderator
- Postovi: 4060
- Pridružen/a: 15 svi 2008, 18:05
- Spol: M
- OS: Fedora/KDE
- Lokacija: Hamburg, DE
- Kontakt:
Re: Bash rekurzivno putovanje direktorijima
Imaš pravo, promijenio sam iz "f" u "item".tomog999 je napisao/la:Možda bi bilo bolje da si stavio neki drugi naziv varijable xargsu umjesto "f",
jer moglo bi se pogrešno zaključiti (mislim na ekipu sa manje iskustva) da "f" od finda i xargsa imaju veze jedno s drugim, tj. da moraju biti isti.
Napustila me bila kreativnost da smislim bolji naziv u tom momentu kad sam pisao gornji oneliner
A neutron walks into a bar; he asks the bartender, 'How much for a beer?' The bartender looks at him, and says 'For you, no charge.'
Re: Bash rekurzivno putovanje direktorijima
Javlja sljedeču grešku pokušao sam zamijenit " sa ' ali onda javlja druge greške??
Kod: Označi sve
darko@debian:~/Web$ ./ren
xargs: unmatched jednostruki quote; by default quotes are special to xargs unless you use the -0 option
mv: missing file operand
Try `mv --help' for more information.
darko@debian:~/Web$ - 4ndY
- Moderator
- Postovi: 4060
- Pridružen/a: 15 svi 2008, 18:05
- Spol: M
- OS: Fedora/KDE
- Lokacija: Hamburg, DE
- Kontakt:
Re: Bash rekurzivno putovanje direktorijima
Ne razumijem, koje si navodnike pokušao zamijeniti i zašto?
A neutron walks into a bar; he asks the bartender, 'How much for a beer?' The bartender looks at him, and says 'For you, no charge.'
Re: Bash rekurzivno putovanje direktorijima
cim sam copy pastao i pokrenu ./ren izbacio mi je ovu grešku nakon toga sam probao zamjeniti " sa ' i ' sa " i urznim kombinacijam ali je svaki put javljao drug grešku