bobafett Skrevet 14. desember 2004 Del Skrevet 14. desember 2004 Skal zippe en del kataloger og kjører følgende kommando: for i in *; do find -type d -name $i | zip -r $i -@ done Dette går greit på kataloger som ikke har mellomrom i navnet, men fungerer ikke på kataloger med mellomrom. Er det en måte å få for-løkka til å ta hensyn til mellomrommet, eller må jeg fjerne mellomrommet? Lenke til kommentar
burre Skrevet 14. desember 2004 Del Skrevet 14. desember 2004 find -type d -maxdepth 1 ! -name \. -exec zip -r {} {}/. \; Eller export IFS='' ; for a in * ; do ls -l $a ; done ; unset IFS Eller, enda bedre, lær å bruk katalognavn uten mellomrom. Burre Lenke til kommentar
bobafett Skrevet 14. desember 2004 Forfatter Del Skrevet 14. desember 2004 Takker så mye. Brukte den første, og alle katalogene ble zippet. Lenke til kommentar
trost i taklampa Skrevet 15. desember 2004 Del Skrevet 15. desember 2004 Eller, enda bedre, lær å bruk katalognavn uten mellomrom. Burre Enig! Men her får ofte vi som konverter fra Windows til Linux et bittelite problem. Først spanderer vi tiden det tar å brenne 20 DVD plater (backup altså). Så sletter vi alle partisjoner og installerer Linux med stort hell, og etter at disse 20 DVD platene er kopiert tilbake (som tar tid) så sitter vi der med en hel haug kataloger som har mellomrom i navnet:) Been there done that:) Lenke til kommentar
LessThanJake Skrevet 15. desember 2004 Del Skrevet 15. desember 2004 Det sliter jeg med og alle filene fra windowstiden med masse mellomrom. Noen som har en bra kombo-kommando som bytter ut alle mellomrom med _ rekursivt !! Lenke til kommentar
mohuhau Skrevet 15. desember 2004 Del Skrevet 15. desember 2004 Det sliter jeg med og alle filene fra windowstiden med masse mellomrom. Noen som har en bra kombo-kommando som bytter ut alle mellomrom med _ rekursivt !! Dette bash scriptet f.eks: #!/bin/bash space_to_underscore() { if [ "$1" != "" ]; then cd "$1" if [ $? != 0 ]; then echo "Invalid directory \"$1\", aborting." exit; fi fi for f in *; do if [ "$f" != "*" ]; then newname=`echo "$f" | sed "s/ /_/g"` if [ "$newname" != "$f" ]; then mv "$f" "$newname" fi fi done for d in *; do if [ -d "$d" ]; then cd "$d" space_to_underscore cd .. fi done } space_to_underscore $1 Denne vil rekursivt endre alle mellom i filer og mapper til understrek. Lenke til kommentar
LessThanJake Skrevet 15. desember 2004 Del Skrevet 15. desember 2004 Det var saker ja Laget det selv? Tenkte jeg skulle lære meg litt skallprogramering i julen, er jo lurt å kunne et minimum i alle fall! Lenke til kommentar
Velmont Skrevet 15. desember 2004 Del Skrevet 15. desember 2004 Det var saker ja Laget det selv? Tenkte jeg skulle lære meg litt skallprogramering i julen, er jo lurt å kunne et minimum i alle fall! Det er heilt utruleg herlig skal eg seie deg! Bash er det språket eg brukar oftast Det er så umåtelig hending til altslags småting. Lenke til kommentar
trost i taklampa Skrevet 16. desember 2004 Del Skrevet 16. desember 2004 Jeg må hive meg på og takke for denne jeg også. Utrolig bra! Også så fort som det gikk! Jeg vet ikke hvor mange kataloger og filer dette scriptet tok seg av på min maskin, men det var ikke få. Uansett var det gjort i en fei:) Lenke til kommentar
LessThanJake Skrevet 16. desember 2004 Del Skrevet 16. desember 2004 Kjørte du det på /, da får du krysse fingrene og håpe at det ikke er noen systemfiler som har mellomrom i filnavnet Lenke til kommentar
trost i taklampa Skrevet 16. desember 2004 Del Skrevet 16. desember 2004 Kjørte du det på /, da får du krysse fingrene og håpe at det ikke er noen systemfiler som har mellomrom i filnavnet Hahaa...jeg prøvde, men fikk "Permission Denied" Det har nok godt bra. Har hatt en reboot etterpå, og ting ser ut til å fungere som de skal. 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å