LINUX.ORG.RU

Командные файлы в Unix


0

0

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

Командные файлы в Unix

man wc

man cat

man bash там for, [[ ]]

man chmod

man echo

в принципе должно хватить

qnikst ★★★★★ ()

Командные файлы в Unix

for i in `ls`; do
    if [ ! -d "$i" ]; then
        lines="`head -3 \"$i\" 2>/dev/null | wc -l`"

        if [ $lines -gt 2 ]; then
            echo $i
        fi
    fi
done

баги: файлы с пробелами в имени не обрабатываются.

alex_custov ★★★★★ ()
Ответ на: Командные файлы в Unix от alex_custov

Командные файлы в Unix

for i in `ls |sed 's/ /SPACE/g'`; do nf=$(echo $i |sed 's/SPACE/ /g'); lc=$(cat «$nf» |wc -l); if [ $lc -gt 0 ]; then echo $nf; fi; done

Вот грязнейший хак для обработки пробелов. Ничего лучше придумать не могу. ТС, никогда так не делай :]

ZZaiatSS ★★ ()
Ответ на: Re: Командные файлы в Unix от Lumi

Командные файлы в Unix

Я вас ещё немного подкорректирую. ТС нужно командный файл. Это значит, что содержимое фала должно быть таким:

#!/bin/sh
 wc -l * | head -n -1 | awk '$1>2 {print $2}' 

вот теперь, думаю, всё. Нужно только ему права выдать chmod +x командный_файл.sh

name_no ★★ ()
Ответ на: Re: Командные файлы в Unix от dhameoelin

Командные файлы в Unix

> доброЛОР
Дык, человек UNIX изучает! Это вам не тупой хацкер, который хочет помножить отправляемую статистику скачивания на 0.

AITap ★★★★★ ()
Ответ на: Командные файлы в Unix от name_no

Командные файлы в Unix

> вот теперь, думаю, всё. Нужно только ему права выдать chmod +x командный_файл.sh

Нет, не все. А как же файлы, начинающиеся с точки?

bigbit ★★★★★ ()
Ответ на: Командные файлы в Unix от Lumi

Командные файлы в Unix

$ find -type f -maxdepth 1 -exec wc -l {} \; | awk '$1>2 {print $2}'

find: warning: you have specified the -maxdepth option after a non-option argument -type, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.

name_no ★★ ()
Ответ на: Командные файлы в Unix от Lumi

Командные файлы в Unix

> Зачем лишние процессы? Достаточно -exec

я просто этот exec недолюбливаю. Кривой он какой-то, уже не помню, сколько раз и по каким причинам на это напарывался, но теперь мне надоело тратить время на то, чтобы проверить, сработает ли он в этот раз. Хотя, там проблемы в основном со всякими $()

name_no ★★ ()
Ответ на: Командные файлы в Unix от AITap

Re: Командные файлы в Unix

Цитируем AITap

доброЛОР

Дык, человек UNIX изучает! Это вам не тупой хацкер, который хочет помножить отправляемую статистику скачивания на 0.

а я, собственно, о чем?!

dhameoelin ★★★★★ ()
Ответ на: Командные файлы в Unix от name_no

Командные файлы в Unix

Я просто не проверял, так никаких предупреждений, так как -maxdepth должен стоять первым:
find . -maxdepth 1 -type f -exec wc -l {} \; | awk '$1>2 {print $2}'

Lumi ★★★★★ ()
Ответ на: Командные файлы в Unix от Lumi

Командные файлы в Unix

> find . -maxdepth 1 -type f -exec wc -l {} \; | awk '$1>2 {print $2}'

вот, это то, что мы хотели, теперь добавить в начало #!/bin/sh, права выдать... Думаю, препод завалит ТС-а :( Скажет, надо было циклы )))

name_no ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.