LinuxForum.Fans
Тема

shell awk имя каталога

Автор: JuliaDulceFlor 5 сообщений 3720 просмотров
#355371

Shell-программа подсчитывает количество и выводит список всех файлов (без каталогов) в алфавитном порядке в поддереве, начиная с каталога, имя которого задано параметром Shell-программы.
мне нужно чтобы не путь до каталога выводился, а только его название.
и подсчитать кол-во

text
#!/bin/bash
ls $1 -lAR |awk '{if ($1~/:/) print "каталог " $1; else print $8 "\t" $6}'
#355372

Ох, что-то сумбурненько у вас получилось. :) Давайте попробуем так: сначала покажите, что у вас получается сейчас, а потом скажите, что вам хочется получить.

P. S. Это вам в учебном заведении такое задание дали? :)

#355383
allez написал:
Ох, что-то сумбурненько у вас получилось. :) Давайте попробуем так: сначала покажите, что у вас получается сейчас, а потом скажите, что вам хочется получить.

P. S. Это вам в учебном заведении такое задание дали? :)

ой, тут 8 на 9 надо заменить, а 6 на 5, просто изначально не в Linux писала
Например Выводит:

text
julia@JuliaDulceFlor:~$ ./lab2 /home/julia/cfile/
каталог /home/julia/cfile/:
34    7465
34.c    782
aaa.fifo    0
a.out    7390
copy    7390
copy3    7391
copy3.c    990
copy.c    904
copy.c.save    916
fif    7546
fif.c    3202
.fif.c.swp    12288
infile    52
outfile    0
pipe    7537
pipe.c    800
rewr    7467
rewr2    7427
rewr2.c    819
rewr3    7580
rewr3.c    1834
rewr3.c.save    1017
rewr4    7393
rewr4.c    843
rewr.c    983
rwloc    7465
rwloc.c    996
s1    7204
s1.c    218
SSH_AGENT_PID=1259    0
tel_position    19

мне нужно, чтобы после слова каталог был написан не полный путь до папок, а только название папок
и ещё подсчитать кол-во файлов.

#355471

Попробуйте это:

text
#!/bin/bash

find $1 -type d -printf "каталог %f:\n" -exec ls -lA {} \; | awk '{if ($1~/^каталог/) print $0; else print $9 "\t" $5}'

Этот код, возможно, потребует доработки, так как вложенные каталоги он обрабатывает как обычные файлы. Доработку оставляю вам в качестве, так сказать, домашней работы - я и так отступил от своего правила не делать за студентов их задания. :)

#355864
text
... gsub(/.*\//,"",$1);print "каталог " $1; ...
Войдите или зарегистрируйтесь, чтобы ответить.