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




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

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