/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Slette en fil der slutter med et whitespac~
Fra : Morten


Dato : 28-04-03 12:09

Hejsa. Jeg har en række filer der slutter med et whitespace.
Dem vil jeg gerne slette i et bash script:

cip@cippweb2: tmp> ls|tr ' ' '_'
preview.log.2003-04-17-08_
preview.log.2003-04-17-09_
preview.log.2003-04-17-10_

Selve sletningen laver jeg på baggrund af en find, men det whitespace der er,
forsvinder, hvorfor det ikke kan slettes:

cip@cippweb2: tmp> find ./* -prune -type f -mtime +7 | while read i; do
> rm "$i"
> done
../preview.log.2003-04-17-08: No such file or directory
../preview.log.2003-04-17-09: No such file or directory
../preview.log.2003-04-17-10: No such file or directory

Ak. Nogen der kan hjælpe?

Morten

 
 
Peter Makholm (28-04-2003)
Kommentar
Fra : Peter Makholm


Dato : 28-04-03 12:19

usenet@kikobu.com (Morten) writes:

> Selve sletningen laver jeg på baggrund af en find, men det whitespace der er,
> forsvinder, hvorfor det ikke kan slettes:

Brug -print0 optionen til find og 'xargs -0' til at udføre din rm.

--
Peter Makholm | What if:
peter@makholm.net | Tannenbaum had convinced Linus that his
http://hacking.dk | operating system really was obsolete

Morten (28-04-2003)
Kommentar
Fra : Morten


Dato : 28-04-03 20:31

Peter Makholm wrote:
> usenet@kikobu.com (Morten) writes:
>
>
>>Selve sletningen laver jeg på baggrund af en find, men det whitespace der er,
>>forsvinder, hvorfor det ikke kan slettes:
>
>
> Brug -print0 optionen til find og 'xargs -0' til at udføre din rm.
>

Godt forslag - hvis bare det havde været en Linux boks. Det er en
Solaris 8 - understøter hverken find -print0 eller xargs -O:/

Derudover, så var mit eksempel lidt for simplificeret, ud over rm
i while løkken, foregår der også en gzip, hvorfor xargs tricket
bliver lidt sværere.

Andre forslag?

Mvh Morten


Klaus Alexander Seis~ (28-04-2003)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 28-04-03 21:18

Morten skrev:

> Godt forslag - hvis bare det havde været en Linux boks. Det er en
> Solaris 8 - understøter hverken find -print0 eller xargs -O:/

Ku' man mon klare det ved at sætte IFS til TAB+LF og så sørge for at
der er TABs mellem kommandoer og alle argumenter?


// Klaus

--
><>    unselfish actions pay back better

Thorbjoern Ravn Ande~ (28-04-2003)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 28-04-03 23:13

Morten <usenet@kikobu.com> writes:

> Andre forslag?

Sæt gåseøjne om dit filnavn.

--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk - Unix, Java, Web, Netværk, Århus

Martin Moller Peders~ (29-04-2003)
Kommentar
Fra : Martin Moller Peders~


Dato : 29-04-03 09:06

In <3ead8181$0$10459$edfadb0f@dread11.news.tele.dk> Morten <usenet@kikobu.com> writes:

>Peter Makholm wrote:
>> usenet@kikobu.com (Morten) writes:
>>
>>
>>>Selve sletningen laver jeg på baggrund af en find, men det whitespace der er,
>>>forsvinder, hvorfor det ikke kan slettes:
>>
>>
>> Brug -print0 optionen til find og 'xargs -0' til at udføre din rm.
>>

>Godt forslag - hvis bare det havde været en Linux boks. Det er en
>Solaris 8 - understøter hverken find -print0 eller xargs -O:/

Hvorfor ikke saa installerer GNU xargs og gnu find ?
De findes begge som solaris-pakker paa http://sunfreeware.com/
En Solaris 8 uden nogle GNU vaerktoejer er ikke meget vaerd.

/Martin



sv-e (28-04-2003)
Kommentar
Fra : sv-e


Dato : 28-04-03 21:12

Morten wrote:
> Hejsa. Jeg har en række filer der slutter med et whitespace.
> Dem vil jeg gerne slette i et bash script:
>
> cip@cippweb2: tmp> ls|tr ' ' '_'
> preview.log.2003-04-17-08_
> preview.log.2003-04-17-09_
> preview.log.2003-04-17-10_
>
> Selve sletningen laver jeg på baggrund af en find, men det whitespace der er,
> forsvinder, hvorfor det ikke kan slettes:
>
> cip@cippweb2: tmp> find ./* -prune -type f -mtime +7 | while read i; do
>
>> rm "$i"
>>done
>
> ./preview.log.2003-04-17-08: No such file or directory
> ./preview.log.2003-04-17-09: No such file or directory
> ./preview.log.2003-04-17-10: No such file or directory
>
> Ak. Nogen der kan hjælpe?
>
> Morten

Hej
Din tr øverst gør som jeg ser det ikke andet end at udskifte din
whitespace med _ til stdout. Når du så kører din find, længere nede
hedder filerne jo stadig det samme som før, altså noget med whitespace i.

Eller har jeg misforstået dine oplysninger ?

Hvis jeg ikke har misforstået noget, så skal du jo enten have omdøbt
dine filer først, eller have tilføjet et whitespace til din $i i slette
delen.

vh
sv-e


sv-e (28-04-2003)
Kommentar
Fra : sv-e


Dato : 28-04-03 21:33

sv-e wrote:
> Morten wrote:
>
>> Hejsa. Jeg har en række filer der slutter med et whitespace.
>> Dem vil jeg gerne slette i et bash script:
>>
>> cip@cippweb2: tmp> ls|tr ' ' '_'
>> preview.log.2003-04-17-08_
>> preview.log.2003-04-17-09_
>> preview.log.2003-04-17-10_
>>
>> Selve sletningen laver jeg på baggrund af en find, men det whitespace
>> der er,
>> forsvinder, hvorfor det ikke kan slettes:
>>
>> cip@cippweb2: tmp> find ./* -prune -type f -mtime +7 | while read i; do
>>
>>> rm "$i"
>>> done
>>
>>
>> ./preview.log.2003-04-17-08: No such file or directory
>> ./preview.log.2003-04-17-09: No such file or directory
>> ./preview.log.2003-04-17-10: No such file or directory
>>
>> Ak. Nogen der kan hjælpe?
>>
>> Morten
>
>
> Hej
> Din tr øverst gør som jeg ser det ikke andet end at udskifte din
> whitespace med _ til stdout. Når du så kører din find, længere nede
> hedder filerne jo stadig det samme som før, altså noget med whitespace i.
>
> Eller har jeg misforstået dine oplysninger ?
>
> Hvis jeg ikke har misforstået noget, så skal du jo enten have omdøbt
> dine filer først, eller have tilføjet et whitespace til din $i i slette
> delen.
>
> vh
> sv-e
>
Hej
Jeg var måske lidt hurtigt ude med mit første svar
Hvad sker der hvis du ændre:
find ./* -prune -type f -mtime +7

til

find * -prune -type f -mtime +7

du står jo angiveligt i tmp ?

vh
sv-e



Morten (28-04-2003)
Kommentar
Fra : Morten


Dato : 28-04-03 22:22

sv-e wrote:

> Hej
> Jeg var måske lidt hurtigt ude med mit første svar
> Hvad sker der hvis du ændre:
> find ./* -prune -type f -mtime +7
>
> til
>
> find * -prune -type f -mtime +7
>
> du står jo angiveligt i tmp ?

Det tmp dir er ikke /tmp. Problemet er heller ikke min find? :/

Mvh Morten



Morten (28-04-2003)
Kommentar
Fra : Morten


Dato : 28-04-03 22:19

sv-e wrote:

>
>
> Hej
> Din tr øverst gør som jeg ser det ikke andet end at udskifte din
> whitespace med _ til stdout. Når du så kører din find, længere nede
> hedder filerne jo stadig det samme som før, altså noget med whitespace i.
>
> Eller har jeg misforstået dine oplysninger ?

Njæh.. Det var bare for at synliggøre hvad jeg mente :)

> Hvis jeg ikke har misforstået noget, så skal du jo enten have omdøbt
> dine filer først, eller have tilføjet et whitespace til din $i i slette
> delen.

rm "$i " dutter ikke da ikke alle filer har et trailing whitespace :/
Jeg kan for så vidt godt omdøbe filen, men er mv immun overfor de
whitespaces?

Mvh Morten


Michael Hjorth (28-04-2003)
Kommentar
Fra : Michael Hjorth


Dato : 28-04-03 22:07

Morten wrote:
>
> Hejsa. Jeg har en række filer der slutter med et whitespace.
> Dem vil jeg gerne slette i et bash script:
>
> cip@cippweb2: tmp> ls|tr ' ' '_'
> preview.log.2003-04-17-08_
> preview.log.2003-04-17-09_
> preview.log.2003-04-17-10_
>
> Selve sletningen laver jeg på baggrund af en find, men det whitespace der er,
> forsvinder, hvorfor det ikke kan slettes:
>
> cip@cippweb2: tmp> find ./* -prune -type f -mtime +7 | while read i; do
> > rm "$i"
> > done
> ./preview.log.2003-04-17-08: No such file or directory
> ./preview.log.2003-04-17-09: No such file or directory
> ./preview.log.2003-04-17-10: No such file or directory
>
> Ak. Nogen der kan hjælpe?

Hvorfor bruger du ikke -exec i stedet for din while-løkke?

Prøv f.eks. noget i stil med: find ./* -prune -type f -mtime +7 -exec rm
"{}" \;

Michael.

Morten (28-04-2003)
Kommentar
Fra : Morten


Dato : 28-04-03 22:25

Michael Hjorth wrote:

>
> Hvorfor bruger du ikke -exec i stedet for din while-løkke?
>
> Prøv f.eks. noget i stil med: find ./* -prune -type f -mtime +7 -exec rm
> "{}" \;
>

Fordi det egentlige script er således:


find ./* -prune -type f -mtime +7 | while read i; do
gzip --to-stdout "$i" > $ZIP_DIR/`echo $i|tr ' ' '_'`.gz
rm "$i"
done

Jeg oversimplificerede det vist da jeg stillede det oprindelige
spørgsmål. Som et kuriosum kan jeg nævne at echo $i bibeholder
mit trailing whitespace.

Jeg er bange for at jeg skal til at ty til lidt kraftigere midler
som perl eller sed.

Mvh Morten


Brian Christensen (28-04-2003)
Kommentar
Fra : Brian Christensen


Dato : 28-04-03 23:34

On Mon, 28 Apr 2003 23:24:43 +0200, Morten wrote:

> Michael Hjorth wrote:
>
>
>> Hvorfor bruger du ikke -exec i stedet for din while-løkke?
>>
>> Prøv f.eks. noget i stil med: find ./* -prune -type f -mtime +7 -exec
>> rm "{}" \;
>>
>>
> Fordi det egentlige script er således:
>
>
> find ./* -prune -type f -mtime +7 | while read i; do
> gzip --to-stdout "$i" > $ZIP_DIR/`echo $i|tr ' ' '_'`.gz rm "$i"
> done
>
> Jeg oversimplificerede det vist da jeg stillede det oprindelige
> spørgsmål. Som et kuriosum kan jeg nævne at echo $i bibeholder mit
> trailing whitespace.
>
> Jeg er bange for at jeg skal til at ty til lidt kraftigere midler som perl
> eller sed.
>
> Mvh Morten

Hvad med "rm -- filnavn". Den plejer at virke når der er underlige tegn i
filnavnet.


mvh
Brian

sv-e (29-04-2003)
Kommentar
Fra : sv-e


Dato : 29-04-03 07:18

Morten wrote:
> find ./* -prune -type f -mtime +7 | while read i; do
> gzip --to-stdout "$i" > $ZIP_DIR/`echo $i|tr ' ' '_'`.gz

> Jeg er bange for at jeg skal til at ty til lidt kraftigere midler
> som perl eller sed.

Hej
Det som tr gør for dig, mener jeg ikke at sed kan gøre bedere, da sed jo
også bare aflevere til stdout. Men måske kan du finde en workarround ved
at lade eks. awk eller cut udskrive din søgning inden du udfører rm / mv
eller hvad du nu skal ?


vh
sv-e


Michael Hjorth (29-04-2003)
Kommentar
Fra : Michael Hjorth


Dato : 29-04-03 20:57

Morten wrote:
>
> Michael Hjorth wrote:
>
> >
> > Hvorfor bruger du ikke -exec i stedet for din while-løkke?
> >
> > Prøv f.eks. noget i stil med: find ./* -prune -type f -mtime +7 -exec rm
> > "{}" \;
> >
>
> Fordi det egentlige script er således:
>
> find ./* -prune -type f -mtime +7 | while read i; do
> gzip --to-stdout "$i" > $ZIP_DIR/`echo $i|tr ' ' '_'`.gz
> rm "$i"
> done
>
> Jeg oversimplificerede det vist da jeg stillede det oprindelige
> spørgsmål. Som et kuriosum kan jeg nævne at echo $i bibeholder
> mit trailing whitespace.
>

Du kan jo så lave nogle snydetricks som f.eks:

j=`ls $i*`
rm "$j"

Michael.

Søg
Reklame
Statistik
Spørgsmål : 177551
Tips : 31968
Nyheder : 719565
Indlæg : 6408843
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste