Re: Dateinamen mit Leerzeichen korrekt bearbeiten

2004-04-20 Diskussionsfäden Heike C. Zimmerer
[EMAIL PROTECTED] (Heike C. Zimmerer) writes:

> Juergen Salk <[EMAIL PROTECTED]> writes:
>
 for datei in $verzeichnis/* $verzeichnis/.*
>
> Ja, stimmt.  Was wenig daran ändert, dass dein Vorschlag bei
> Leerzeichen in Dateinamen ungeeignet ist.

Da lag ich falsch.  Ich hatte nicht gesehen, dass die beiden Argumente
keine Argumente mehr für ein ls in Backticks sind.  Dein Vorschlag ist
geeignet und ich habe mich getäuscht.

Gruß,

 Heike


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)



Re: Dateinamen mit Leerzeichen korrekt bearbeiten

2004-04-19 Diskussionsfäden Juergen Salk
Heike C. Zimmerer <[EMAIL PROTECTED]> wrote:

 for datei in $verzeichnis/* $verzeichnis/.*
>>
>>> Das wird nichts. "$verzeichnis/.*" schliesst alles, was mit ".." 
>>> anfämgt ein, geht also ins Parent.
>>
>> Vielleicht solltest Du es mal ausprobieren, bevor Du solche 
>> gewagten Thesen aufstellst.
> 
> Ja, stimmt.  Was wenig daran ändert, dass dein Vorschlag bei
> Leerzeichen in Dateinamen ungeeignet ist.

*Seufz* 

Liebes Heikilein, probiere es doch endlich einmal aus.
Vielleicht verstehst Du es dann ...

J.


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)



Re: Dateinamen mit Leerzeichen korrekt bearbeiten

2004-04-19 Diskussionsfäden Heike C. Zimmerer
Juergen Salk <[EMAIL PROTECTED]> writes:

> Heike C. Zimmerer <[EMAIL PROTECTED]> wrote:
>
>>> for datei in $verzeichnis/* $verzeichnis/.*
>
>> Das wird nichts. "$verzeichnis/.*" schliesst alles, was mit ".." 
>> anfämgt ein, geht also ins Parent.
>
> Vielleicht solltest Du es mal ausprobieren, bevor Du solche 
> gewagten Thesen aufstellst.
>
> "$verzeichnis/.*" geht nirgendwo hin sondern expandiert 
> lediglich auch zu "$verzeichnis/..", was aber wegen des 
> folgenden "[ -r "$datei" ... ]" völlig irrelevant ist, 
> weil ".." keine reguläre Datei darstellt.

Ja, stimmt.  Was wenig daran ändert, dass dein Vorschlag bei
Leerzeichen in Dateinamen ungeeignet ist.

Gruß,

 Heike


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)



Re: Dateinamen mit Leerzeichen korrekt bearbeiten

2004-04-19 Diskussionsfäden Juergen Salk
Heike C. Zimmerer <[EMAIL PROTECTED]> wrote:

>> for datei in $verzeichnis/* $verzeichnis/.*

> Das wird nichts. "$verzeichnis/.*" schliesst alles, was mit ".." 
> anfämgt ein, geht also ins Parent.

Vielleicht solltest Du es mal ausprobieren, bevor Du solche 
gewagten Thesen aufstellst.

"$verzeichnis/.*" geht nirgendwo hin sondern expandiert 
lediglich auch zu "$verzeichnis/..", was aber wegen des 
folgenden "[ -r "$datei" ... ]" völlig irrelevant ist, 
weil ".." keine reguläre Datei darstellt.

J.


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)



Re: Dateinamen mit Leerzeichen korrekt bearbeiten

2004-04-19 Diskussionsfäden Heike C. Zimmerer
Juergen Salk <[EMAIL PROTECTED]> writes:

> for datei in $verzeichnis/* $verzeichnis/.*

Nachtrag zu meinem anderen Artikel: dem OP ging es um Leerzeichen.
Also:

OLDIFS="$IFS" IFS="
"
for i in $(find . -maxdepth 1 -type f); do
# Mach irgendwas mit "$i"
done
IFS="$OLDIFS"

hat Probleme mit Newlines in Dateinamen und sieht grauslig aus,
wird aber oft verwendet.

find . -maxdepth 1 -type f | while read i; do
# Mach irgendwas mit "$i"
done

sieht schon schöner aus, hat aber ebenfalls Probleme mit Newlines.

Beidesmal muss natürlich $i in Anführungszeichen gesetzt werden, wenn
es verwendet werden soll.

find . -maxdepth 1 -type f -exec tuwas mit \{} \;

ist sauber, schränkt aber "tuwas" ein, und

find . -maxdepth 1 -type f -print 0 | xarg -0 tuwas

schränkt "tuwas" weiter ein.

Das fällt mir so auf Anhieb an Möglichkeiten ein.

Gruß,

 Heike


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)



Re: Dateinamen mit Leerzeichen korrekt bearbeiten

2004-04-19 Diskussionsfäden Heike C. Zimmerer
Juergen Salk <[EMAIL PROTECTED]> hat:
>> for datei in `ls -A $verzeichnis`
ersetzt durch:
> for datei in $verzeichnis/* $verzeichnis/.*

Das wird nichts. "$verzeichnis/.*" schliesst alles, was mit ".." 
anfämgt ein, geht also ins Parent.

for datei in $(find . -maxdepth 0)

wäre eine Alternative.

Gruß,

 Heike


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)



Re: Dateinamen mit Leerzeichen korrekt bearbeiten

2004-04-19 Diskussionsfäden Michael Bramer
On Mon, Apr 19, 2004 at 01:51:22PM +0200, Thilo Engelbracht wrote:
> Am 19.04.2004 um 12:11 Uhr schrieb B. Venthur <[EMAIL PROTECTED]>:
> 
> > > From: Thilo Engelbracht
> > > 
> > > Hallo Liste!
> > > [...] 
> > > Wie muß ich (Newbie!) mein Skript ändern, dass alle Dateien in dem
> > > Verzeichnis beachtet werden?
> > 
> > Hi Thilo,
> > 
> > ich glaube du musst einfach den Term in Anführungsstrichen setzen:
> > 
> > "$lustigevariablemitleerzeichen"
> 
> Habe ich versucht - leider ohne Erfolg.
> 
> Zwei Punkte möchte ich gerne erreichen:
> 1.) Die Namen der Files, die in dem Verzeichnis enthalten sind, können
> Leerzeichen enthalten.
> 2.) Unter Umständen können die Dateinamen sogar mit einem "." anfangen.
> Auch diese Files sollen bearbeitet werden.
> 
> Mein Skript habe ich geändert und den "basename"-Befehl eingebaut. Auch
> dies führt leider nicht zum gewünschten Ergebnis. Eine Datei "datei 1"
> heisst nach dem "basename"-Kommando nur noch "datei"...
> 
> Hat jemand noch eine Idee?

Man kann sowas oft sehr schön mit find '-print0' und xargs lösen. 

Wenn es aber bash sein soll:

ls -A $PATH | while read a
do
  echo "$a"
done

(sollte funktionieren, ist aber untested...)

Gruss
Grisu
-- 
Michael Bramer  -- http://www.feuerwehr.kreuzau.de/wiki/
PGP: finger [EMAIL PROTECTED]  -- Linux Sysadmin   -- Use Debian Linux
"Manchmal ist es besser zu schweigen und die anderen glauben zu lassen, man sei
 ein Narr, als zu reden und die letzten Zweifel zu beseitigen." (L. Simpson) 


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)



Re: Dateinamen mit Leerzeichen korrekt bearbeiten

2004-04-19 Diskussionsfäden M G Berberich
Hallo,

Am Monday, den 19. April 2004 11:24:31 schrieb Thilo Engelbracht:

> Heute habe ich mir ein kleines Skript erstellt (Beispiel):
> 
>  #!/bin/bash
> 
>  verzeichnis="/home/thilo/Data"
> 
>  for datei in `ls -A $verzeichnis`
>  do
>  if [ -f $verzeichnis/$datei -a -r $verzeichnis/$datei ]
>  then
>   # hier wird die Datei weiterverarbeitet
> # ...
> # ...
>  fi
>  done
> 
> 
> Anschliessend habe ich zu Testzwecken einige Dateien angelegt:
> 
>  echo "abc" > /home/thilo/Data/datei-1
>  echo "xyz" > /home/thilo/Data/datei-2
>  echo "012" > "/home/thilo/Data/datei 3"
>  echo "789" > "/home/thilo/Data/datei 4"
> 
> 
> Mein Problem: Es werden nur die Dateien verarbeitet, die kein
> Leerzeichen enthalten.

Alternativ zu den diversen Lösungen geht's auch mit while/read:

  ls -A $verzeichnis | while read datei; do
  ...
  done

und in der Schleife immer Anführungszeichen um $datei ("$datei").

MfG
bmg

-- 
"Des is völlig wurscht, was heut beschlos- | M G Berberich
 sen wird: I bin sowieso dagegn!"  | [EMAIL PROTECTED]
(SPD-Stadtrat Kurt Schindler; Regensburg)  | www.fmi.uni-passau.de/~berberic


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)



Re: Dateinamen mit Leerzeichen korrekt bearbeiten

2004-04-19 Diskussionsfäden Peter Hoffmann
Am Mo, den 19.04.2004 schrieb Thilo Engelbracht um 11:24:
> Hallo Liste!
> 
> Heute habe ich mir ein kleines Skript erstellt (Beispiel):
> 
>  #!/bin/bash
> 
>  verzeichnis="/home/thilo/Data"
> 
>  for datei in `ls -A $verzeichnis`
>  do
>  if [ -f $verzeichnis/$datei -a -r $verzeichnis/$datei ]
>  then
>   # hier wird die Datei weiterverarbeitet
> # ...
> # ...
>  fi
>  done
> 
> 
> Anschliessend habe ich zu Testzwecken einige Dateien angelegt:
> 
>  echo "abc" > /home/thilo/Data/datei-1
>  echo "xyz" > /home/thilo/Data/datei-2
>  echo "012" > "/home/thilo/Data/datei 3"
>  echo "789" > "/home/thilo/Data/datei 4"
> 
> 
> Mein Problem: Es werden nur die Dateien verarbeitet, die kein
> Leerzeichen enthalten.
> 
> Wie muß ich (Newbie!) mein Skript ändern, dass alle Dateien in dem
> Verzeichnis beachtet werden?
> 

Hallo Thilo,

du musst vor der Schleife folgendes einfügen:
IFS="  
"
Damit wird als Trennzeichen Newline verwendet (mehr siehe man bash).

Gruss
-- 
Peter Hoffmann <[EMAIL PROTECTED]>



Re: Dateinamen mit Leerzeichen korrekt bearbeiten

2004-04-19 Diskussionsfäden Thilo Engelbracht
Am 19.04.2004 um 12:11 Uhr schrieb B. Venthur <[EMAIL PROTECTED]>:

> > From: Thilo Engelbracht
> > 
> > Hallo Liste!
> > [...] 
> > Wie muß ich (Newbie!) mein Skript ändern, dass alle Dateien in dem
> > Verzeichnis beachtet werden?
> 
> Hi Thilo,
> 
> ich glaube du musst einfach den Term in Anführungsstrichen setzen:
> 
> "$lustigevariablemitleerzeichen"

Habe ich versucht - leider ohne Erfolg.

Zwei Punkte möchte ich gerne erreichen:
1.) Die Namen der Files, die in dem Verzeichnis enthalten sind, können
Leerzeichen enthalten.
2.) Unter Umständen können die Dateinamen sogar mit einem "." anfangen.
Auch diese Files sollen bearbeitet werden.

Mein Skript habe ich geändert und den "basename"-Befehl eingebaut. Auch
dies führt leider nicht zum gewünschten Ergebnis. Eine Datei "datei 1"
heisst nach dem "basename"-Kommando nur noch "datei"...

Hat jemand noch eine Idee?


Vielen Dank für Eure Mühe!

Mit freundlichen Grüßen,

Thilo

--
Registered Linux user #348074 with the Linux counter
http://counter.li.org


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)



Re: Dateinamen mit Leerzeichen korrekt bearbeiten

2004-04-19 Diskussionsfäden Juergen Salk
Thilo Engelbracht <[EMAIL PROTECTED]> wrote:

> #!/bin/bash
> 
> verzeichnis="/home/thilo/Data"
> 
> for datei in `ls -A $verzeichnis`
> do
> if [ -f $verzeichnis/$datei -a -r $verzeichnis/$datei ]
> then
>  # hier wird die Datei weiterverarbeitet
>  # ...
>  # ...
> fi
> done
> 
> 
> Mein Problem: Es werden nur die Dateien verarbeitet, die kein
> Leerzeichen enthalten.

#!/bin/bash 

verzeichnis="/home/thilo/Data"

for datei in $verzeichnis/* $verzeichnis/.*
do
if [ -f "$datei" -a -r "$datei" ]
then
echo "$datei"
fi
done


Beste Gruesse - Juergen

-- 
GPG A997BA7A | 87FC DA31 5F00 C885 0DC3  E28F BD0D 4B33 A997 BA7A


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)



RE: Dateinamen mit Leerzeichen korrekt bearbeiten

2004-04-19 Diskussionsfäden B. Venthur
> From: Thilo Engelbracht [mailto:[EMAIL PROTECTED]
> Sent: Monday, April 19, 2004 11:25 AM
> To: Debian User German
> Subject: Dateinamen mit Leerzeichen korrekt bearbeiten
> 
> Hallo Liste!
> [...] 
> Wie muß ich (Newbie!) mein Skript ändern, dass alle Dateien in dem
> Verzeichnis beachtet werden?

Hi Thilo,

ich glaube du musst einfach den Term in Anführungsstrichen setzen:

"$lustigevariablemitleerzeichen"

> Vielen Dank für Eure Mühe!

Nich dafür ;)

> 
> Mit freundlichen Grüßen,
> 
> Thilo
> 

Bastian




Dateinamen mit Leerzeichen korrekt bearbeiten

2004-04-19 Diskussionsfäden Thilo Engelbracht
Hallo Liste!

Heute habe ich mir ein kleines Skript erstellt (Beispiel):

 #!/bin/bash

 verzeichnis="/home/thilo/Data"

 for datei in `ls -A $verzeichnis`
 do
 if [ -f $verzeichnis/$datei -a -r $verzeichnis/$datei ]
 then
  # hier wird die Datei weiterverarbeitet
  # ...
  # ...
 fi
 done


Anschliessend habe ich zu Testzwecken einige Dateien angelegt:

 echo "abc" > /home/thilo/Data/datei-1
 echo "xyz" > /home/thilo/Data/datei-2
 echo "012" > "/home/thilo/Data/datei 3"
 echo "789" > "/home/thilo/Data/datei 4"


Mein Problem: Es werden nur die Dateien verarbeitet, die kein
Leerzeichen enthalten.

Wie muß ich (Newbie!) mein Skript ändern, dass alle Dateien in dem
Verzeichnis beachtet werden?


Vielen Dank für Eure Mühe!

Mit freundlichen Grüßen,

Thilo

--
Registered Linux user #348074 with the Linux counter
http://counter.li.org


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)