AWK - rekordy


(system) #1

Witam

Piszę a raczej próbuje napisać skrypt w bashu w połączeniu z awk. Na razie podstawy. Chce do awk przesłać listę plików i katalogów aby on mi sam ją podzielił na poszczególne kolumny. Znalazłem w internecie pętle która niby to umożliwia

#!/bin/bash

if [-d $1]

then


        awk -vARG1=$1 'BEGIN{

        i = 0

        while(("ls -o " ARG1 "" | getline ) > 0)

        {

                print ($0)

                getline ans < "-"

        }

} #zakończenie begina


' #zakończenie awk

else

echo "Podano ścieżkę do katalogu, który nie istnieje"

fi

Podaję jako parametr folder, sprawdzam czy to na pewno folder, jeśli tak to chce wyświetlić po kolei linijki polecenia ls -o. Wiem że można to zrobić w inny sposób ale tu chodzi o to żeby zrobić to przez awk bo mi to posłuży w późniejszym kodzie.

Niestety podany sposób wyświetla mi puste linijki.

Wie ktoś co zrobić ?

Pozdrawiam


(roobal) #2

Pewnie, że można i to bez zbędnych kombinacji:

#!/bin/bashif [ -d $1 ]; then-o $1 | awk '{print $0}'else    echo "Podano ścieżkę do katalogu, który nie istnieje"fi[/code]



Pozdrawiam!

(system) #3

Ok, to rozwiązanie działa.

Ale teraz jak już mam listę plików to chce w kodzie AWK stworzyć tablicę dwuwymiarową która bedzie zawierać informację o plikach

każdy z plików posiada następujące informacje - Nazwa - właściciel - rozmiar - typ

Ale ten podany kod wyżej każdą linijkę wczytuje osobno i kod awk wykonuje się od nowa. Jeśli zadeklaruje cokolwiek w kodzie to przy następnej linijce jest usuwane i tworzone na nowo więc moja tablica jest kasowana. Zmienna sterująca i =0 jest zerowana za każdym razem.

#!/bin/bash

if [-d $1]

then

ls -o $1 | awk -vA=$1 'BEGIN{

                i = 0

                if (NF > 2)

                {

                        i++

                        tab[i,2] = $3

                        if(substr($1,1,1) == "-")

                        {

                                tab[i,1] = $4

                                tab[i,3] = "-"

                                tab[i,4] = $NF

                        }

                        else if(substr($1,1,1) == "d")

                        {

                                tab[i,3] ="d" ;

                                tab[i,4] = $NF;

                        }

                        else if(substr($1,1,1) == "l")

                        {

                                tab[i,1] = $4

                                tab[i,3] = "l"

                                tab[i,4] = $NF

                        }

                }

        close ("ls -o");

        wypisz(i,A , tab);

        }' #koniec begin i skryptu awk

Funkcję wypisz mam stworzoną jednak wyświetla ona pustą tablicę. Co zrobić żeby kod wewnątrz wczytywał kolejną linijkę ? W poprzednim przykładzie była pętla jednak nie działała. Tutaj też mogę dodać ale nie wiem jak wczytać kolejną linijkę polecenia ls już w tej pętli


(roobal) #4

Nie mam pojęcia czemu próbujesz wynaleźć koło jeszcze raz :slight_smile: Przecież takie informacje uzyskasz bez takich kombinacji przy pomocy ls z odopowiednią opcją, mianowicie ls -l pokaże Ci to co chcesz osiągnąć a ls -la pokaże Ci również pliki ukryte, dla przykładu:

ls -l /etc/

razem 1700

-rw-r--r-- 1 root root 149 2009-07-14 03:25 00-header

drwxr-xr-x 4 root root 4096 2009-10-28 22:02 acpi

-rw-r--r-- 1 root root 2986 2009-10-28 21:55 adduser.conf

drwxr-xr-x 2 root root 4096 2010-03-07 10:14 akonadi

-rw-r--r-- 1 root root 64 2010-03-23 13:06 aliases

-rw-r--r-- 1 root root 12288 2010-03-23 13:06 aliases.db

drwxr-xr-x 2 root root 4096 2010-04-13 18:45 alternatives

-rw-r--r-- 1 root root 395 2009-09-17 21:32 anacrontab

drwxr-xr-x 6 root root 4096 2009-10-28 21:58 apm

drwxr-xr-x 2 root root 4096 2010-01-02 20:45 apparmor

drwxr-xr-x 7 root root 4096 2010-04-10 03:10 apparmor.d

drwxr-xr-x 4 root root 4096 2009-12-16 02:49 apport

drwxr-xr-x 5 root root 4096 2010-03-15 15:49 apt

-rw-r----- 1 root daemon 144 2009-09-15 15:09 at.deny

drwxr-xr-x 3 root root 4096 2009-11-24 04:12 avahi

-rw-r--r-- 1 root root 1754 2009-09-14 07:09 bash.bashrc

-rw-r--r-- 1 root root 219331 2009-10-05 18:37 bash_completion

drwxr-xr-x 2 root root 4096 2010-04-27 19:35 bash_completion.d

-rw-r--r-- 1 root root 344 2009-10-07 08:01 bindresvport.blacklist

-rw-r--r-- 1 root root 321 2009-10-22 23:54 blkid.conf

lrwxrwxrwx 1 root root 15 2009-11-07 02:31 blkid.tab -> /dev/.blkid.tab

drwxr-xr-x 2 root root 4096 2010-03-15 21:57 bluetooth

-rw-r--r-- 1 root root 7135 2009-06-05 23:54 bogofilter.cf

drwxr-xr-x 2 root root 4096 2009-10-28 22:01 bonobo-activation

-rw-r--r-- 1 root root 33 2009-10-28 22:04 brlapi.key

drwxr-xr-x 2 root root 20480 2010-01-31 11:36 brltty

-rw-r--r-- 1 root root 18624 2009-10-14 01:54 brltty.conf

drwxr-xr-x 2 root root 4096 2009-10-28 22:02 byobu

drwxr-xr-x 3 root root 4096 2009-10-28 21:55 ca-certificates

-rw-r--r-- 1 root root 6332 2009-10-28 21:55 ca-certificates.conf

drwxr-xr-x 2 root root 4096 2009-10-28 22:02 calendar

drwxr-s--- 2 root dip 4096 2009-10-28 22:02 chatscripts

drwxr-xr-x 2 root root 4096 2009-11-09 22:52 checkbox.d

drwxr-xr-x 2 root root 4096 2010-04-15 22:37 chromium-browser

drwxr-xr-x 4 root root 4096 2010-03-23 13:06 clamav

drwxr-xr-x 2 root root 4096 2009-10-28 22:02 compizconfig

drwxr-xr-x 2 root root 4096 2009-10-28 22:02 computer-janitor.d

drwxr-xr-x 4 root root 4096 2009-10-28 21:57 ConsoleKit

drwxr-xr-x 2 root root 4096 2009-11-07 02:40 console-setup

drwxr-xr-x 3 root root 4096 2009-10-28 22:00 console-tools

drwxrwxr-x 4 couchdb couchdb 4096 2009-10-28 22:02 couchdb

drwxr-xr-x 2 root root 4096 2009-10-28 22:02 cron.d

drwxr-xr-x 2 root root 4096 2010-03-30 18:41 cron.daily

drwxr-xr-x 2 root root 4096 2009-10-28 22:02 cron.hourly

drwxr-xr-x 2 root root 4096 2009-12-03 22:45 cron.monthly

-rw-r--r-- 1 root root 724 2009-09-15 15:12 crontab

drwxr-xr-x 2 root root 4096 2009-12-15 17:43 cron.weekly

-rw-r--r-- 1 root root 54 2009-10-28 22:06 crypttab

drwxr-xr-x 4 root lp 4096 2010-05-08 02:01 cups

-rw-r--r-- 1 root root 89 2009-12-15 17:43 cvs-cron.conf

-rw-r--r-- 1 root root 126 2009-12-15 17:43 cvs-pserver.conf

drwxr-xr-x 5 root root 4096 2009-10-28 22:01 dbus-1

-rw-r--r-- 1 root root 2969 2009-10-02 21:15 debconf.conf

-rw-r--r-- 1 root root 12 2010-03-28 00:34 debian_version

drwxr-xr-x 3 root root 4096 2010-03-30 18:41 default

drwxr-xr-x 4 root root 4096 2009-10-28 22:01 defoma

-rw-r--r-- 1 root root 600 2009-08-03 17:33 deluser.conf

drwxr-xr-x 2 root root 4096 2009-10-28 21:55 depmod.d

drwxr-xr-x 4 root root 4096 2010-01-28 11:20 dhcp3

drwxr-xr-x 2 root root 4096 2010-02-26 22:49 dictionaries-common

drwxr-xr-x 3 root root 4096 2009-10-28 21:58 doc-base

drwxr-xr-x 4 root root 4096 2010-03-13 18:19 dpkg

drwxr-xr-x 2 root root 4096 2010-02-26 00:02 elinks

drwxr-xr-x 3 root root 4096 2009-10-28 21:58 emacs

-rw-r--r-- 1 root root 79 2009-10-28 21:55 environment

drwxr-xr-x 2 root root 4096 2009-10-28 22:01 esound

drwxr-xr-x 2 root root 4096 2010-04-13 19:32 fbpanel

drwxr-xr-x 3 root root 4096 2009-10-28 21:58 firefox-3.0

drwxr-xr-x 4 root root 4096 2009-10-28 21:59 firefox-3.5

drwxr-xr-x 4 root root 4096 2009-10-28 21:57 fonts

drwxr-xr-x 3 root root 4096 2009-10-28 22:01 foomatic

-rw-r--r-- 1 root root 943 2010-02-09 17:48 fstab

-rw-r--r-- 1 root root 890 2009-11-07 02:43 fstab~

-rw-r----- 1 root fuse 216 2009-03-05 18:42 fuse.conf

-rw-r--r-- 1 root root 2689 2008-03-27 14:22 gai.conf

drwxr-xr-x 2 root root 4096 2009-10-28 22:05 gamin

drwxr-xr-x 6 root root 4096 2009-10-28 21:56 gconf

drwxr-xr-x 2 root root 4096 2009-10-28 22:02 gdb

drwxr-xr-x 6 root root 4096 2009-12-09 19:16 gdm

drwxr-xr-x 3 root root 4096 2009-10-28 21:59 gimp

drwxr-xr-x 3 root root 4096 2009-10-28 22:01 gnome

drwxr-xr-x 2 root root 4096 2009-10-28 22:02 gnome-app-install

drwxr-xr-x 3 root root 4096 2009-10-28 22:00 gnome-system-tools

drwxr-xr-x 3 root root 4096 2009-10-28 21:57 gnome-vfs-2.0

-rw-r--r-- 1 root root 10852 2007-04-28 04:27 gnome-vfs-mime-magic

drwxr-xr-x 2 root root 4096 2010-04-10 03:10 gre.d

drwxr-xr-x 2 root root 4096 2009-10-28 22:02 groff

-rw-r--r-- 1 root root 948 2010-04-07 03:29 group

-rw------- 1 root root 942 2010-04-07 03:29 group-

drwxr-xr-x 2 root root 4096 2010-04-13 00:55 grub.d

-rw-r----- 1 root shadow 790 2010-04-07 03:29 gshadow

-rw------- 1 root root 784 2010-04-07 03:29 gshadow-

drwxr-xr-x 2 root root 4096 2010-02-04 11:24 gtk-2.0

drwxr-xr-x 3 root root 4096 2009-10-28 21:59 hal

-rw-r--r-- 1 root root 4794 2009-10-06 22:36 hdparm.conf

-rw-r--r-- 1 root root 92 2009-04-27 11:56 host.conf

-rw-r--r-- 1 root root 7 2009-11-07 02:40 hostname

-rw-r--r-- 1 root root 252 2009-11-07 02:40 hosts

-rw-r--r-- 1 root root 579 2009-10-28 22:03 hosts.allow

-rw-r--r-- 1 root root 878 2009-10-28 22:03 hosts.deny

drwxr-xr-x 2 root root 4096 2009-10-28 22:01 hp

drwxr-xr-x 3 root root 4096 2009-10-28 22:00 ifplugd

-rw-r--r-- 1 root root 73 2010-03-30 18:41 inetd.conf

drwxr-xr-x 2 root root 4096 2010-04-15 22:36 init

drwxr-xr-x 2 root root 4096 2010-04-15 22:36 init.d

drwxr-xr-x 5 root root 4096 2009-10-28 21:56 initramfs-tools

-rw-r--r-- 1 root root 1721 2009-09-23 14:16 inputrc

drwxr-xr-x 3 root root 4096 2009-09-07 20:39 insserv

-rw-r--r-- 1 root root 885 2009-09-07 20:39 insserv.conf

drwxr-xr-x 2 root root 4096 2009-09-07 20:39 insserv.conf.d

drwxr-xr-x 2 root root 4096 2009-10-28 21:55 iproute2

-rw-r--r-- 1 root root 19 2009-10-20 02:04 issue

-rw-r--r-- 1 root root 12 2009-10-20 02:04 issue.net

drwxr-xr-x 3 root root 4096 2009-10-28 22:00 kbd

drwxr-xr-x 4 root root 4096 2010-04-27 19:35 kde3

drwxr-xr-x 3 root root 4096 2010-01-30 20:56 kde4

-rw-r--r-- 1 root root 89 2009-11-02 16:46 kde4rc

drwxr-xr-x 4 root root 4096 2009-10-28 22:00 kernel

-rw-r--r-- 1 root root 167 2009-11-07 02:42 kernel-img.conf

-rw-r--r-- 1 root root 1309 2009-09-24 13:28 kerneloops.conf

drwxr-xr-x 2 root root 4096 2009-10-28 22:06 keys

-rw-r--r-- 1 root root 1128 2009-07-17 23:45 ksysguarddrc

drwxr-xr-x 2 root root 4096 2010-03-10 01:18 kubuntu-default-settings

drwxr-xr-x 10 root root 4096 2009-10-28 22:02 laptop-mode

drwxr-xr-x 2 root root 4096 2009-10-28 21:56 ldap

-rw-r--r-- 1 root root 99516 2010-04-16 01:44 ld.so.cache

-rw-r--r-- 1 root root 34 2009-10-28 21:55 ld.so.conf

drwxr-xr-x 2 root root 4096 2010-01-20 19:50 ld.so.conf.d

-rw-r--r-- 1 root root 267 2009-07-08 21:36 legal

-rw-r--r-- 1 root root 3587 2009-10-13 22:30 lftp.conf

-rw-r--r-- 1 root root 20 2009-06-03 03:54 libao.conf

drwxr-xr-x 2 root root 4096 2009-11-27 21:00 libgda-4.0

drwxr-xr-x 2 root root 4096 2008-06-19 14:59 libpaper.d

-rw-r--r-- 1 root root 2570 2009-06-17 10:56 locale.alias

-rw-r--r-- 1 root root 2679 2010-04-07 22:42 localtime

drwxr-xr-x 3 root root 4096 2009-10-28 21:55 logcheck

-rw-r--r-- 1 root root 10783 2010-02-09 17:45 login.defs

-rw-r--r-- 1 root root 599 2009-08-20 06:51 logrotate.conf

drwxr-xr-x 2 root root 4096 2010-04-09 17:23 logrotate.d

drwxr-xr-x 2 root root 4096 2009-10-08 21:01 lsb-base

-rw-r--r-- 1 root root 3844 2009-10-08 16:36 lsb-base-logging.sh

-rw-r--r-- 1 root root 97 2009-10-20 01:44 lsb-release

-rw-r--r-- 1 root root 15752 2009-07-25 17:13 ltrace.conf

drwxr-xr-x 2 root root 4096 2010-02-26 02:32 lynx-cur

-rw-r--r-- 1 root root 111 2009-05-13 19:33 magic

-rw-r--r-- 1 root root 111 2009-05-13 19:33 magic.mime

-rw-r--r-- 1 root root 32582 2010-04-09 22:05 mailcap

-rw-r--r-- 1 root root 449 2009-09-09 09:35 mailcap.order

-rw-r--r-- 1 root root 125 2009-01-15 10:26 mail.rc

-rw-r--r-- 1 root root 5173 2009-09-07 12:18 manpath.config

drwxr-xr-x 2 root root 4096 2010-01-30 20:36 mc

drwxr-xr-x 2 root root 4096 2010-03-08 22:11 menu

drwxr-xr-x 2 root root 4096 2010-04-13 19:26 menu-methods

-rw-r--r-- 1 root root 22187 2009-09-09 09:35 mime.types

-rw-r--r-- 1 root root 801 2009-10-24 17:10 mke2fs.conf

drwxr-xr-x 2 root root 4096 2009-10-28 22:02 modprobe.d

-rw-r--r-- 1 root root 198 2010-01-29 13:47 modules

drwxr-xr-x 4 root root 4096 2009-10-28 22:05 mono

lrwxrwxrwx 1 root root 13 2009-11-07 02:31 motd -> /var/run/motd

-rw-r--r-- 1 root root 80 2009-10-28 21:55 motd.tail

drwxr-xr-x 2 root root 4096 2010-01-31 12:07 mplayer

-rw-r--r-- 1 root root 293 2009-06-14 21:31 mplayerplug-in.conf

-rw-r--r-- 1 root root 965 2009-06-14 21:31 mplayerplug-in.types

-rw-r--r-- 1 root root 700 2010-05-12 02:22 mtab

-rw------- 1 root roobal 0 2010-01-29 19:22 mtab.fuselock

-rw-r--r-- 1 root root 624 2009-04-29 18:04 mtools.conf

drwxr-xr-x 3 root root 4096 2010-02-11 12:10 mysql

-rw-r--r-- 1 root root 7670 2009-03-30 12:23 nanorc

-rw-r--r-- 1 root root 2064 2006-11-23 20:33 netscsid.conf

drwxr-xr-x 6 root root 4096 2009-11-21 22:16 network

drwxr-xr-x 4 root root 4096 2009-11-07 06:07 NetworkManager

-rw-r--r-- 1 root root 91 2009-04-27 11:56 networks

-rw-r--r-- 1 root root 513 2009-10-28 22:03 nsswitch.conf

drwxr-xr-x 2 root root 4096 2010-03-15 21:57 obex-data-server

drwxr-xr-x 2 root root 4096 2009-11-07 04:43 openal

drwxr-xr-x 2 root root 4096 2010-02-24 11:34 openoffice

-rw-r--r-- 1 root root 151 2009-11-20 20:19 operaprefs_default.ini

-rw-r--r-- 1 root root 53 2009-11-20 20:19 operaprefs_fixed.ini

drwxr-xr-x 5 root root 4096 2010-04-07 03:29 opt

drwxr-xr-x 2 root root 4096 2010-03-10 01:19 PackageKit

-rw-r--r-- 1 root root 552 2009-09-04 10:20 pam.conf

drwxr-xr-x 2 root root 4096 2010-04-15 22:37 pam.d

drwxr-xr-x 2 root root 4096 2009-10-28 21:58 pango

-rw-r--r-- 1 root root 3 2009-11-07 02:41 papersize

-rw-r--r-- 1 root root 1778 2010-04-07 03:29 passwd

-rw------- 1 root root 1728 2010-03-23 15:02 passwd-

drwxr-xr-x 2 root root 4096 2009-10-28 22:03 pcmcia

drwxr-xr-x 5 root root 4096 2009-11-10 15:29 perl

-rw-r--r-- 1 root root 194 2010-04-30 21:52 perlmonrc

drwxr-xr-x 5 root root 4096 2009-10-28 21:58 pm

-rw-r--r-- 1 root root 7649 2009-10-28 22:03 pnm2ppa.conf

drwxr-xr-x 2 root root 4096 2009-11-07 04:38 PolicyKit

drwxr-xr-x 4 root root 4096 2009-10-28 21:57 polkit-1

-rw-r--r-- 1 root root 350 2009-11-07 02:41 popularity-contest.conf

drwxr-xr-x 3 root root 4096 2010-02-18 17:18 postfix

drwxr-xr-x 4 root root 4096 2009-10-28 21:58 power

drwxr-xr-x 8 root dip 4096 2010-03-15 16:32 ppp

lrwxrwxrwx 1 root root 22 2010-03-07 10:14 printcap -> /var/run/cups/printcap

-rw-r--r-- 1 root root 497 2009-10-28 21:55 profile

drwxr-xr-x 2 root root 4096 2009-10-28 22:03 profile.d

-rw-r--r-- 1 root root 2626 2009-09-15 14:02 protocols

drwxr-xr-x 2 root root 4096 2010-01-28 11:20 pulse

drwxr-xr-x 2 root root 4096 2010-02-24 11:34 purple

drwxr-xr-x 2 root root 4096 2009-10-28 21:56 python

drwxr-xr-x 2 root root 4096 2010-01-22 11:40 python2.5

drwxr-xr-x 2 root root 4096 2009-12-16 02:48 python2.6

drwxr-xr-x 2 root root 4096 2010-02-18 17:18 qt3

drwxr-xr-x 2 root root 4096 2010-04-13 18:49 rc0.d

drwxr-xr-x 2 root root 4096 2010-04-13 18:49 rc1.d

drwxr-xr-x 2 root root 4096 2010-04-13 18:49 rc2.d

drwxr-xr-x 2 root root 4096 2010-04-13 18:49 rc3.d

drwxr-xr-x 2 root root 4096 2010-04-13 18:49 rc4.d

drwxr-xr-x 2 root root 4096 2010-04-13 18:49 rc5.d

drwxr-xr-x 2 root root 4096 2010-04-13 18:49 rc6.d

-rwxr-xr-x 1 root root 306 2009-10-28 21:55 rc.local

drwxr-xr-x 2 root root 4096 2010-03-07 10:14 rcS.d

drwxr-xr-x 3 root root 4096 2009-10-28 21:58 resolvconf

-rw-r--r-- 1 root root 55 2010-05-12 02:22 resolv.conf

-rwxr-xr-x 1 root root 268 2009-04-29 20:25 rmt

-rw-r--r-- 1 root root 887 2009-09-15 14:02 rpc

-rw-r--r-- 1 root root 1228 2009-11-05 12:33 rsyslog.conf

drwxr-xr-x 2 root root 4096 2010-02-18 17:18 rsyslog.d

drwxr-xr-x 2 root root 4096 2010-05-12 02:22 samba

drwxr-xr-x 3 root root 4096 2009-10-28 22:03 sane.d

drwxr-xr-x 2 root root 4096 2010-02-05 17:54 screenlets

-rw-r--r-- 1 root root 3663 2009-07-06 07:36 screenrc

-rw-r--r-- 1 root root 1018 2009-07-31 15:55 securetty

drwxr-xr-x 2 root root 4096 2009-10-28 21:55 security

-rw-r--r-- 1 root root 71449 2009-03-05 18:52 sensors3.conf

-rw-r--r-- 1 root root 85602 2009-04-29 15:41 sensors.conf

-rw-r--r-- 1 root root 18832 2009-09-15 14:02 services

drwxr-xr-x 3 root root 4096 2010-02-24 11:34 sgml

-rw-r----- 1 root shadow 1200 2010-04-07 03:29 shadow

-rw------- 1 root root 1172 2010-03-23 15:02 shadow-

-rw-r--r-- 1 root root 192 2010-02-09 17:45 shells

drwxr-xr-x 2 root root 4096 2009-10-28 22:02 skel

-rw-r--r-- 1 root root 1156 2009-05-18 14:27 smi.conf

drwxr-xr-x 3 root root 4096 2009-10-28 21:57 sound

drwxr-xr-x 4 root root 4096 2009-10-28 22:03 speech-dispatcher

drwxr-xr-x 2 root root 4096 2009-10-28 22:02 ssh

drwxr-xr-x 4 root root 4096 2010-01-20 19:51 ssl

-r--r----- 1 root root 557 2009-11-07 02:40 sudoers

-rw-r--r-- 1 root root 19 2008-11-17 16:16 su-to-rootrc

-rw-r--r-- 1 root root 2277 2009-09-15 23:46 sysctl.conf

drwxr-xr-x 2 root root 4096 2010-03-18 14:40 sysctl.d

drwxr-xr-x 2 root root 4096 2009-10-28 21:55 terminfo

drwxr-xr-x 4 root root 4096 2009-12-05 20:59 thunderbird

-rw-r--r-- 1 root root 14 2010-04-07 22:42 timezone

drwxr-xr-x 2 root root 4096 2009-11-07 04:21 timidity

-rw-r--r-- 1 root root 645 2009-05-02 01:31 ts.conf

-rw-r--r-- 1 root root 1260 2008-05-30 08:22 ucf.conf

drwxr-xr-x 3 root root 4096 2009-11-09 22:52 udev

drwxr-xr-x 3 root root 4096 2009-10-28 22:02 ufw

-rw-r--r-- 1 root root 248 2009-04-29 10:34 updatedb.conf

drwxr-xr-x 3 root root 4096 2009-11-09 22:52 update-manager

drwxr-xr-x 2 root root 4096 2009-11-09 22:51 update-motd.d

drwxr-xr-x 2 root root 4096 2009-10-15 18:29 update-notifier

-rw-r--r-- 1 root root 116 2009-11-07 02:41 usplash.conf

drwxr-xr-x 2 root root 4096 2009-12-17 14:45 vbox

drwxr-xr-x 2 root root 4096 2009-11-07 04:43 vga

drwxr-xr-x 2 root root 4096 2009-10-28 21:55 vim

drwxr-xr-x 3 root root 4096 2010-01-22 11:42 vlc

drwxr-xr-x 2 root root 4096 2009-10-28 22:02 w3m

-rw-r--r-- 1 root root 4221 2009-10-06 17:12 wgetrc

-rw------- 1 root root 719 2010-03-16 23:01 wifi-radar.conf

drwxr-xr-x 2 root root 4096 2009-11-07 04:21 wildmidi

drwxr-xr-x 2 root root 4096 2010-02-02 18:54 wine-doors

drwxr-xr-x 2 root root 4096 2010-02-08 18:27 wireshark

-rw-r--r-- 1 root root 1343 2007-01-09 19:39 wodim.conf

drwxr-xr-x 2 root root 4096 2009-10-28 22:03 wpa_supplicant

drwxr-xr-x 10 root root 4096 2010-04-13 18:45 X11

drwxr-xr-x 10 root root 4096 2010-04-16 01:02 xdg

drwxr-xr-x 2 root root 4096 2009-10-28 22:01 xml

drwxr-xr-x 2 root root 4096 2010-04-10 03:10 xulrunner-1.9.1

Kolumna pierwsza - prawa do pliku oraz rodzaj pliku (d oznacza katalog directory, l - dowiązanie itd.), kolumna druga - właściciel, kolumna trzecia - grupa, kolumna czwarta nazwa pliku lub katalogu. Oprócz tego są inne informacje, więc przez Awk przepuszczasz tylko to co Ciebie interesuje a Grepem możesz dodatkowo filtrować. Czyli całość wyglądałaby tak, wg twoich potrzeb:

#!/bin/bash
if [ -d $1 ]; then
    ls -l $1 | awk -F" " '{ print "Nazwa: " $8 "\tWłaściel: " $4 "\tRozmiar: " $2 "\tTyp: " $1 }'
else
    echo "Podany katalog nie istanieje."
fi[/code]

Tak poza tym w twoim kodzie w Awk mogłeś użyć jeszcze END. Co prawda ls -l daje Tobie na starcie to co chcesz osiągnąć przy pomocy Awk wyświetlasz tylko co Ciebie najbardziej interesuje ale jeśli jednak chcesz osiągnąć coś innego to proponuję zapytać na forum.linux.pl tam jest kilku speców od skryptów Basha tam szybciej znajdziesz lepszą odpowiedź, ja aż tak zaawansowany w Bashu nie jestem :wink:

Pozdrawiam!


(system) #5

To na studiach każą mi wynaleźć koło jeszcze raz. Dla rozjaśnienia wkleję treść zadania. Żeby nie było od razu mówię że nie szukam gotowych rozwiązań.

Lista zajętościowa katalogu


Dla zadanego katalogu drukować listę plików i podkatalogów posortowanych w porządku malejącym w/g zajętości. Dla pliku jako zajętość przyjmować rozmiar własny, dla podkatalogu - sumę rozmiarów wszystkich plików zawartych w jego gałęzi.

Format drukowanej listy plików: 

 


W powyższym wydruku jest w przypadku pliku nie będącego katalogiem, właścicielem pliku, a w przypadku katalogu - posiadaczem plików o największej zajętości w tym katalogu. jest litera: ``d'' dla katalogu, ``-'' dla zwykłego pliku, ``l'' - dla skrótu (dowiązania symbolicznego) itp.

Pod listą zajętościową plików wydrukować podsumowanie: 

sumaryczną zajętość plików w danym katalogu oraz w jego podkatalogach, 

listę sumarycznych zajętości plików w danym katalogu oraz w jego podkatalogach w rozbiciu na poszczególnych użytkowników.


Uwaga: przy rekurencyjnym przeglądaniu katalogów nie brać pod uwagę dowiązań symbolicznych.