Gå til innhold

for-løkke og mellomrom i filnavn


Anbefalte innlegg

Skrevet

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?

Videoannonse
Annonse
Skrevet

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

Skrevet
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:)

Skrevet
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.

Skrevet
Det var saker ja :thumbup:

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! :D

 

Bash er det språket eg brukar oftast :) Det er så umåtelig hending til altslags småting.

Skrevet

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:)

Skrevet
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 :p

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.

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...