LinuxForum.Fans
Тема

Програмирование на shell

Автор: Apis 23 сообщений 6077 просмотров
#289322

Люди добрые, помогите пожалуйса! Нужно написать скрипты, которые делали бы следующие задания:
- Посчитать количество файлов текущего каталога, содержащих подстроку
"include".
- Отсортировать список текстовых файлов текущей директории в алфавитном
порядке и записать его в файл.
- Удалить из текущего каталога все файлы, содержащие подстроку "text".
- Вывести имя текущего каталога, номер текущего процесса (запускающего этот
скрипт) и все параметры командной строки, с которым его запустили.
- Проверить заданный каталог на наличие в нем неразрешенных мягких ссылок.
Если таковые имеются - отправить о них сообщение по mail заданному
пользователю.
Заранее благодарен!

#289336

Вы предлагаете выполнить за вас ваше задание.Предполагается ли какая-нибудь оплата?
Если нет, покажите, выполняли ли вы что-либо сами и что именно у вас не получается.

#289430

Я пробовал выполнить первый пункт следующим образом:
grep -l "include" | wc -l
Мне ничего не выводило на екран, приходилось самому прерывать выполнение команди.

#289431

Почти у любой команды в Linux есть подробная документация.
Введите, к примеру, man grep.

P.S. grep, find, sort, bash (а именно эти команды и оболочка понадобятся, чтобы решить ваши задачи) — не исключение.

#289435

Попробовал такую команду:
grep -rl include /home/apis |wc -l
Команда щитает список количество файло, но недостаток - перед этим выводит список всех файлов в которых была найдена эта строка

#289436

А зачем вы используете опцию -r — рекурсивный поиск? Ведь по вашим условиям поиск должен проводиться только в текущем каталоге.

"Apis" написал:
но недостаток - перед этим выводит список всех файлов в которых была найдена эта строка

Скопируйте вывод консоли и покажите — у меня, к примеру, команда подобная вашей показывает только общее число найденных файлов.

#289437
"Apis" написал:
- Проверить заданный каталог на наличие в нем неразрешенных мягких ссылок.

В качестве бонуса:
— работает в любой оболочке

text

find -L /home/share/media -type l

— работает в zsh

text
file **/*(D@) | fgrep broken
text
for i in **/*(D@); [[ -f $i || -d $i ]] || echo $i
text
echo **/*(@-^./=%p)
text
print -l **/*(-@)
#289442

-r использую потому, что без него не работает.
Благодарю за помощь

#289444
"Apis" написал:
r использую потому, что без него не работает.
"Apis" написал:
- Посчитать количество файлов текущего каталога, содержащих подстроку
"include".
text
grep -l include * | wc -l
#289446
"Apis" написал:
- Удалить из текущего каталога все файлы, содержащие подстроку "text".
text
rm -f $(grep -l text *)
#289447

Все дело было в *, я ее не ставил. Теперь все работает! Благодарю за помощь! И можна еще вопрос?
для задания
"Отсортировать список текстовых файлов текущей директории в алфавитном
порядке и записать его в файл."
команда dir выводит список файлов в алфавитном порядке, для записи в файл я пробовал следующий вариант
var=$(dir)
echo &var>file
но не работает, пока ищу другие способы решения

#289448
"Apis" написал:
"Отсортировать список текстовых файлов текущей директории в алфавитном
text
ls -1 *.txt > list.txt
#289449

Спасибо

text
rm -f $(grep -l text *)

работает, ну а в задании
"Apis" написал:
"Отсортировать список текстовых файлов текущей директории в алфавитном
слова текстовых не должно быть просто список файлов... сейчас пытаюсь что то придумать
#289450
"Apis" написал:
слова текстовых не должно быть просто список файлов...

Как я понимаю, «текстовых», значит, имеющих расширение txt.

#289451

имеется ввиду всех файлов, слово "текстовых" я написал случайно, его не должно быть

#289452
"Apis" написал:
имеется ввиду всех файлов, слово "текстовых" я написал случайно, его не должно быть
text
ls -1 * > list.txt

или даже

text
ls -1 > list.txt
#289453

Таки да, работает, и это же так просто! Благодарю!

#289454
"Apis" написал:
Таки да, работает, и это же так просто!

И, как оказывается, можно и -1 убрать, т.е.

text
ls > list.txt
#289460

кто нибудь научите меня пользоваться "переадресацией"
просто в ум не идет.
я знаю что
cat file > newfile
либо еще какие либо камбинации и потом > file
а как делать наоборот?
чтоб было
<
??

#289462
"moshell" написал:
кто нибудь научите меня пользоваться "переадресацией"

man bash раздел REDIRECTION

Войдите или зарегистрируйтесь, чтобы ответить.