Dateiname mit Leerzeichen in awk Variable

17/04/2010 - 21:27 von René Maroufi | Report spam
Hallo,

ich versuche gerade Dateinamen mit ihren Besitzer und der Gruppe in eine
Datei zu schreiben. Im Moment sieht das so aus:

ls -lA | awk '{ print "chown " $3 ":" $4 " " $9 }'

An sich funktioniert das auch, aber wenn ein Dateiname Leerzeichen
enthàlt dürfte es Probleme geben. In $9 sollte der Dateiname stehen,
aber wie kann ich das erreichen, wenn Leerzeichen enthalten sind?

Achja, falls das relevant ist, es handelt sich nicht um GNU awk,
sondern nawk Version 20071023.

Schöne Grüße
René
René Maroufi
http://www.bin-bash.de
 

Lesen sie die antworten

#1 Ulli Horlacher
17/04/2010 - 21:57 | Warnen spam
René Maroufi wrote:

ich versuche gerade Dateinamen mit ihren Besitzer und der Gruppe in eine
Datei zu schreiben. Im Moment sieht das so aus:

ls -lA | awk '{ print "chown " $3 ":" $4 " " $9 }'



Das geht nicht mit ls und awk.
Spaetestens wenn der Dateiname ein Newline enthaelt, wird dieser Ansatz
scheitern.

Dazu braucht es eine maechtigere Programmiersprache, zB Perl:

perl -we 'opendir D,"." or die $!; while ($f=readdir D) { if (@s=stat $f) { printf "%s : %s : %s",$f,(getpwuid($s[4]))[0],(getgrgid($s[5]))[0] }}'

Ullrich Horlacher Informationssysteme und Serverbetrieb
Rechenzentrum E-Mail:
Universitaet Stuttgart Tel: ++49-711-685-65868
Allmandring 30 Fax: ++49-711-682357
70550 Stuttgart (Germany) WWW: http://www.rus.uni-stuttgart.de/

Ähnliche fragen