parameter parser

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
linuxCowboy
Beiträge: 287
Registriert: 05.02.2013 19:47:41

parameter parser

Beitrag von linuxCowboy » 21.09.2014 13:22:40

Ich brauche von ls die Größe und den Namen mit evntl. Leerzeichen.

Code: Alles auswählen

mkdir /tmp/d1 && cd /tmp/d1
truncate -s 111 file
truncate -s 333 'a file with  space'

\ls -l
total 0
-rw-r--r-- 1 dtc dtc 333 Sep 21 13:04 a file with  space
-rw-r--r-- 1 dtc dtc 111 Sep 21 13:04 file1
am Naheliegensten wäre awk:

Code: Alles auswählen

ls -l|awk '{print $5,$9..$NR}'
awk: {print $5,$9..$NR}
awk:              ^ syntax error
also perl:

Code: Alles auswählen

ls -l|perl -anXE'print "$F[4] ";for($i=0;$i<$#F-7;++$i){print "$F[8+$i] "};say ""'
 
333 'a file with space' 
111 file1 
space fehlt, also selber parsen:

Code: Alles auswählen

ls -l|perl -nE'say "$1 $2" if /^(?:\S+\s+){4}(\S+)\s+(?:\S+\s+){3}(.*)/'
333 'a file with  space'
111 file1
vielleicht mit stat:

Code: Alles auswählen

for i in *;do stat -c "%s %n" "$i";done
333 a file with  space
111 file1
oder:

Code: Alles auswählen

find -print0|xargs -0 stat -c "%s %n"
4096 .
111 ./file1
333 ./a file with  space
Das muss doch einfacher und eleganter gehen?
-der_linux_cowboy --- Besser werden! ... f*** w$$

linuxCowboy
Beiträge: 287
Registriert: 05.02.2013 19:47:41

Re: parameter parser

Beitrag von linuxCowboy » 21.09.2014 13:40:58

haha, oder gleich so:

Code: Alles auswählen

find -printf "%s %p\n"
4096 .
111 ./file1
333 ./a file with  space
-der_linux_cowboy --- Besser werden! ... f*** w$$

Antworten