#1 14.12.2014 19:06:23

vladimir_bogachev
Administrator
Зарегистрирован: 14.12.2014
Сообщений: 8
IP-адрес

Помощь со скриптом

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

#2 14.12.2014 19:16:31

diablopc
Administrator
Зарегистрирован: 17.09.2014
Сообщений: 1 032
IP-адрес

Помощь со скриптом

man find

оно и не такое может

#3 14.12.2014 21:12:31

vladimir_bogachev
Administrator
Зарегистрирован: 14.12.2014
Сообщений: 8
IP-адрес

Помощь со скриптом

Офигительно развернутый ответ, чувак!

#4 14.12.2014 21:19:11

baralgin
Administrator
Зарегистрирован: 29.08.2013
Сообщений: 665
IP-адрес

Помощь со скриптом

Ну так приведите что написали. Может подскажут где ошибка.

#5 14.12.2014 21:21:18

diablopc
Administrator
Зарегистрирован: 17.09.2014
Сообщений: 1 032
IP-адрес

Помощь со скриптом

vladimir_bogachev, Этот ответ подразумевает что уже есть такая "фича" как вы пытаетесь соорудить, это не скрипт, а полноценное приложение, и может оно уж точно не меньше чем нужно вам. Называется это приложение "find". Ну а чтобы узнать как им пользоваться нужно прочитать справку о нем, которая достумна по комманде man find
.....эмммм..... так лучше??

#6 14.12.2014 21:22:27

diablopc
Administrator
Зарегистрирован: 17.09.2014
Сообщений: 1 032
IP-адрес

Помощь со скриптом

baralgin, Ыыы, ты не понял, кажись тут хотят чтоб кто-то написал и выложин на блЯдечке с голубой каемочкой))

#7 14.12.2014 21:22:29

vladimir_bogachev
Administrator
Зарегистрирован: 14.12.2014
Сообщений: 8
IP-адрес

Помощь со скриптом

Это, я понял, в общем проблема именно в том, как выдать только количество найденных файлов или только пути к ним

#8 14.12.2014 21:23:14

diablopc
Administrator
Зарегистрирован: 17.09.2014
Сообщений: 1 032
IP-адрес

Помощь со скриптом

Quote by vladimir_bogachev
Это, я понял, в общем проблема именно в том, как выдать только количество найденных файлов или только пути к ним

Ок, а что уже написано???

#9 14.12.2014 21:23:47

vladimir_bogachev
Administrator
Зарегистрирован: 14.12.2014
Сообщений: 8
IP-адрес

Помощь со скриптом

сейчас...

#10 14.12.2014 21:27:49

vladimir_bogachev
Administrator
Зарегистрирован: 14.12.2014
Сообщений: 8
IP-адрес

Помощь со скриптом

echo Введите имя файла:
read Name
echo Введите директорию:
read Path
find /$Verzeichnis -iname "$Name*"
echo Выбирети один из 2 вариантов
echo 1 - Выдать путь файлов
echo 2 - Выдать кол-во найденных файлов
read Choice
case $Choice in
1)
2)
esac

#11 14.12.2014 21:28:39

vladimir_bogachev
Administrator
Зарегистрирован: 14.12.2014
Сообщений: 8
IP-адрес

Помощь со скриптом

Вот что писать где 1) и 2)?

#12 14.12.2014 21:53:56

diablopc
Administrator
Зарегистрирован: 17.09.2014
Сообщений: 1 032
IP-адрес

Помощь со скриптом

vladimir_bogachev,
Строка поиска find $Path -iname $Name* >> /tmp/files
Выдача количества wc -l /tmp/files
Листинг путей cat /tmp/files
И в конце удаляем результаты rm /tmp/files

#13 14.12.2014 22:20:53

vladimir_bogachev
Administrator
Зарегистрирован: 14.12.2014
Сообщений: 8
IP-адрес

Помощь со скриптом

wc -l /tmp/files вот он еще выдает сам путь /tmp/files, как можно без жтого?

#14 14.12.2014 22:30:14

vladimir_bogachev
Administrator
Зарегистрирован: 14.12.2014
Сообщений: 8
IP-адрес

Помощь со скриптом

еще вопрос, как выдать результат в одну строку типа:
найдено "wc -l /tmp/files" файлов

#15 14.12.2014 22:34:19

diablopc
Administrator
Зарегистрирован: 17.09.2014
Сообщений: 1 032
IP-адрес

Помощь со скриптом

Quote by vladimir_bogachev
wc -l /tmp/files вот он еще выдает сам путь /tmp/files, как можно без жтого?

А если так:
#!/bin/bash
echo Введите имя файла:
read Name
echo Введите директорию:
read Path
echo Выбирети один из 2 вариантов
echo 1 - Выдать путь файлов
echo 2 - Выдать кол-во найденных файлов
read n
if [[ "$n" = *2* ]]; 
then
    find $Path -iname $Name* | wc -l
else
    find $Path -iname $Name* 
fi

#16 14.12.2014 22:39:25

diablopc
Administrator
Зарегистрирован: 17.09.2014
Сообщений: 1 032
IP-адрес

Помощь со скриптом

Quote by vladimir_bogachev
еще вопрос, как выдать результат в одну строку типа:найдено "wc -l /tmp/files" файлов

#!/bin/bash
echo Введите имя файла:
read Name
echo Введите директорию:
read Path
echo Выбирети один из 2 вариантов
echo 1 - Выдать путь файлов
echo 2 - Выдать кол-во найденных файлов
read n
if [[ "$n" = *2* ]]; 
then
    echo founded `find $Path -iname $Name* | wc -l` files
else
    find $Path -iname $Name* 
fi

Ну или сАвсЭм извращенно
#!/bin/bash
red='\033[1;31m'
blue='\033[1;34m'
echo Введите имя файла:
read Name
echo Введите директорию:
read Path
echo Выбирети один из 2 вариантов
echo 1 - Выдать путь файлов
echo 2 - Выдать кол-во найденных файлов
read n
clear
if [[ "$n" = *2* ]]; 
then
    echo -e "${red} founded ${blue}`find $Path -iname $Name* | wc -l` ${red}files"
else
    find $Path -iname $Name* 
fi

ЗЫ
Советую почитать:
If...then...else...fi
Bash-Colors полезно в выдаче результатов

#17 15.12.2014 05:00:27

Cruiser78
Administrator
Зарегистрирован: 22.02.2010
Сообщений: 2 391
IP-адрес

Помощь со скриптом

Советую почитать:
If...then...else...fi
Bash-Colors полезно в выдаче результатов

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

#18 15.12.2014 09:05:45

diablopc
Administrator
Зарегистрирован: 17.09.2014
Сообщений: 1 032
IP-адрес

Помощь со скриптом

Cruiser78, Эххххх..... вот отсюда и берутся юзвери, которые при словах "вбей в поиске" открывают вконтакты и жмут там "поиск" =)

#19 15.12.2014 15:11:26

algri14
Administrator
Зарегистрирован: 25.08.2013
Сообщений: 216
IP-адрес

Помощь со скриптом

Quote by Cruiser78
Да не будет он читать. Это ленивый студень или школьник
Quote by diablopc
Эххххх..... вот отсюда и берутся юзвери, которые при словах "вбей в поиске" открывают вконтакты и жмут там "поиск" =)

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

#20 16.12.2014 19:24:03

kasperovitch-s
Administrator
Зарегистрирован: 15.12.2014
Сообщений: 23
IP-адрес

Помощь со скриптом

я юзер какие сделать скрины своих действий я лазил по форумам смотрел похожее и пробал через терминал но нечево невключилось смотрел видео уроки с ютуба но вай так и не заработал

#21 20.12.2014 14:55:25

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

Помощь со скриптом

diablopc, вам времени не жалко на ТСа?

И да, вы ошибки в скрипты намеренно вставили?

#22 20.12.2014 14:58:14

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

Помощь со скриптом

Quote by kasperovitch-s
я юзер какие сделать скрины своих действий я лазил по форумам смотрел похожее и пробал через терминал но нечево невключилось смотрел видео уроки с ютуба но вай так и не заработал
вам сюда: http://7bloggers.ru/xy-problem/

#23 20.12.2014 15:00:12

diablopc
Administrator
Зарегистрирован: 17.09.2014
Сообщений: 1 032
IP-адрес

Помощь со скриптом

Quote by drBatty
вам времени не жалко на ТСа?

Cам пытаюсь чему-то учиться, так что время я трачу не на ТС а на себя

Quote by drBatty
И да, вы ошибки в скрипты намеренно вставили?

Где?!! o_O

#24 20.12.2014 15:33:16

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

Помощь со скриптом

Quote by diablopc
[ "$n" = *2* ];
не очень понятен смысл данного кода.
Quote by diablopc
echo -e "${red} founded ${blue}`find $Path -iname $Name* | wc -l`
этот быдлокод я даже комментировать не буду.
Quote by diablopc
find "$Path" -iname "$Name*"
тут кавычек не хватает. Исправил. Ну и вообще не нужно.

Quote by diablopc
Ну или сАвсЭм извращенно
я понимаю. ЧСВ повысить. Но однострок на перле уже 11 лет как на ЛОР вбросили. Т.ч. жиденько у вас получилось.

Quote by diablopc
echo Введите имя файла: read Name

напоследок, откройте help read.
-p prompt output the string PROMPT without a trailing newline before
attempting to read

#25 20.12.2014 15:37:29

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

Помощь со скриптом

Quote by vladimir_bogachev
wc -l /tmp/files вот он еще выдает сам путь /tmp/files, как можно без жтого?
sed 's/ .*//' < <(wc -l имя_файла)

#26 20.12.2014 15:44:26

diablopc
Administrator
Зарегистрирован: 17.09.2014
Сообщений: 1 032
IP-адрес

Помощь со скриптом

Quote by drBatty
не очень понятен смысл данного кода.
Что именно??
Quote by drBatty
этот быдлокод я даже комментировать не буду.

А можно, все-же, услышать комменты??
Quote by drBatty
тут кавычек не хватает.

А накой они там??
Quote by drBatty
напоследок, откройте help read.-p prompt 

Не знал. СПС, почитаю)
Quote by drBatty
sed 's/ .*//' < <(wc -l имя_файла)

А зачем??
Я сам сначала временный файл прикрутил....
Но вовремя понял что оно не нужно....

#27 20.12.2014 16:31:45

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

Помощь со скриптом

Quote by diablopc
А можно, все-же, услышать комменты??
сколько можно-то? Я уже Over9000 раз говорил: конвейеры == зло. Толку вам повторять, если вы всё равно быдлокод пишете. Я даже удивляюсь, как он вообще работает!

Quote by diablopc
А накой они там??
кавычки нужны что-бы спецсимволы типа пробелов правильно работали.
Quote by diablopc
Я сам сначала временный файл прикрутил....
Но вовремя понял что оно не нужно....
я по коду вижу, что вы его лепите как придётся. Получается очень плохо. Если конкретно, то ВСЁ плохо, каждая лексема не к месту. Вы слышали, как нерусские по-русски говорят?
Quote by diablopc
А зачем??
просто ответил на вопрос. Хотя конечно в реальном коде это надо в переменной фильтровать, а не в sed. Bash это умеет.

#28 20.12.2014 16:38:37

diablopc
Administrator
Зарегистрирован: 17.09.2014
Сообщений: 1 032
IP-адрес

Помощь со скриптом

Quote by drBatty
кавычки нужны что-бы спецсимволы типа пробелов правильно работали.

Забыл я про них(спецсимволы)...
Quote by drBatty
конвейеры == зло.

Ну так покажите как нужно.
Говорю-же
Quote by diablopc
Cам пытаюсь чему-то учиться

#29 20.12.2014 20:22:11

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

Помощь со скриптом

Quote by diablopc
Ну так покажите как нужно.
а я никогда не делаю чужие домашние задания бесплатно. И вам не советую. ТСу очевидно наплевать на bash, ему зачёт нужен.

А вам помогу, всегда пожалуйста. И да, ABS давно написана и даже переведена. Про sed я написал книжку. Надо info coreutils перевести? Давайте займёмся.

И да, совет: не публикуйте быдлокод. Текст программы должен быть ЧИТАЕМЫМ. Скрипты не исключение, а как раз наоборот. Зачем вы других новичков путаете? Вам сложно поставить отступы и комментарии? Сложно не использовать длинные конвейеры? Сложно понять, ЧТО делает ваш скрипт. Зачем он нужен?

И да, посмотрел задачу, не понимаю, зачем она? Первая часть (вывести имена файлов) решается [console]ls[/console] или
[console]find -ls[/console]

вторая часть бесполезна, ну я её решил выше

[console]sed 's/ .*//' < <(wc -l имя_файла)[/console]
если уж НАДО

И да, ещё совет: в скрипте лучше использовать длиинные опции:
wc --lines

так легче читать.

А короткие нужны для интерактива, хотя bash complete их умеет:
wc --l<TAB> # УМВР

#30 20.12.2014 20:42:59

diablopc
Administrator
Зарегистрирован: 17.09.2014
Сообщений: 1 032
IP-адрес

Помощь со скриптом

Quote by drBatty
Про sed я написал книжку.

Ссылку можно??
...а то до sed все руки не доходят (
Quote by drBatty
Вам сложно поставить отступы и комментарии?

А вот это уже точно пускай делают *WASSUP* (те кому домашка нужна)
Quote by drBatty
Сложно не использовать длинные конвейеры?

По крайней мере покаместь - да....
Quote by drBatty
И да, ещё совет: в скрипте лучше использовать длиинные опции:wc --linesтак легче читать.

Принято)
Quote by drBatty
И да, посмотрел задачу, не понимаю, зачем она?

Типа тот кто составлял эту задачу понимает зачем оно %)
Quote by drBatty
find -ls

В условии сказано: "или путь к каждому файлу"
Там find правильнее будет чем find -ls
Quote by drBatty
А вам помогу, всегда пожалуйста

СПС

Board footer