Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.66/32: Рейтинг темы: голосов - 32, средняя оценка - 4.66
0 / 0 / 0
Регистрация: 28.09.2011
Сообщений: 15
1

Обойти все каталоги и удалить случайные файлы

28.09.2011, 17:59. Показов 6242. Ответов 32
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите,пожалуйста.написать программку)Она должна обходить все каталоги и удалять случайные файлы!!!Заранее спасибо))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.09.2011, 17:59
Ответы с готовыми решениями:

Удалить все файлы и каталоги из папки Temp - не удаляются ReadOnly-объекты
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles...

файлы.Создать файлы f и g, компонентами которых являются целые случайные числа. Записать в файл h все совпадающие компоненты файлов f и g.
Создать файлы f и g, компонентами которых являются целые случайные числа. Записать в файл h все...

Найти и удалить все пустые каталоги
Найти и удалить все пустые каталоги.Не получаеться, мне в звдвнии нужно использовать оператор if,...

Найти и удалить все пустые каталоги на диске
Найти и удалить все пустые каталоги на диске (имя диска указывается в качестве параметра). Вывести...

32
382 / 330 / 159
Регистрация: 06.12.2010
Сообщений: 894
25.10.2011, 01:15 2
с корневого каталога командой ls находите список всех директорий, а там дальше уже $RANDOM%
1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
25.10.2011, 01:59 3
Цитата Сообщение от Daemon025
с корневого каталога командой ls находите список всех директорий
там нужно find использовать, так как она может различать файлы и каталоги и не пропускает скрытые файлы
1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
28.10.2011, 02:35 4
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/sh
 
files=($(find -mindepth 2 -type f))
n=${#files[@]}
 
#echo ${files[@]} $n
 
for i in $(seq $((n / 3))); do
    r=$(($RANDOM % $n))
    #echo rand: $r
    echo delete: ${files[$r]}
    #rm -f ${files[$r]}
done
 
exit 0
Код
[guest@localhost d]$ ls -R
.:
a  b  c  t.sh

./a:
a.txt  b.txt  c.txt  d.txt  e.txt

./b:
a.txt  b.txt  c.txt  d.txt

./c:
a.txt  b.txt  c.txt
[guest@localhost d]$ ./t.sh
delete: ./c/c.txt
delete: ./b/d.txt
delete: ./a/d.txt
delete: ./a/c.txt
[guest@localhost d]$
2
0 / 0 / 0
Регистрация: 28.09.2011
Сообщений: 15
28.10.2011, 21:30  [ТС] 5
спасибо огромное,accept !)))Вы мне ОЧЕНЬ помогли)

Добавлено через 3 часа 59 минут
accept, еще раз спасибо большое за помощь с программой)Дело в том,что нам нужно сдать 4 лабораторных,а я в этом ничего не понимаю)Может быть,сможешь помочь с остальными?А я в долгу не останусь,могу к примеру денег на телефон кинуть или что-нибудь в этом роде))Мне очень нужно)Как Вы на это смотрите?)
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
29.10.2011, 07:10 6
Цитата Сообщение от Nicy90
Дело в том,что нам нужно сдать 4 лабораторных,а я в этом ничего не понимаю)Может быть,сможешь помочь с остальными?
скидывай в этом разделе
1
0 / 0 / 0
Регистрация: 28.09.2011
Сообщений: 15
31.10.2011, 21:21  [ТС] 7
n=${#files[@]} а в этой строчке мы n присваиваем значение #files[@]...это что означает?)

Добавлено через 59 минут
Большое спасибо еще раз,первую защитила)
Вот новое задание:
Имеется программа на языке, похожем на паскаль:
procedure blah_blah();
begin
write(a);
read(b);
c := a+b;
end;

cоставить регулярные выражения, соответствующие строкам программы (проверить ее синтаксис).
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
01.11.2011, 02:04 8
Цитата Сообщение от Nicy90
это что означает?)
количество элементов в массиве записывается в удобную переменную

Добавлено через 27 минут
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/sh
 
IFS=$'\n'
a=("procedure blah_blah();" "begin" "write(a);" "read(b);" "c := a+b;" "end;")
IFS=$' \t\n'
#echo ${a[1]}
 
#for i in ${a[@]}; do
#    echo $i
#done
 
for n in $(seq 0 $((${#a[@]} - 1))); do
    case $n in
     0) regexp="^procedure .\+();$";;
     1) regexp="^begin$";;
     2) regexp="^write(.\+);$";;
     3) regexp="^read(.\+);$";;
     4) regexp="^. := .+.;$";;
     5) regexp="^end;$";;
    esac
    line=${a[n]}
    #echo $line
    if echo -n "$line" | grep -qe "$regexp"; then
        echo $((n + 1)): true
    else
        echo $((n + 1)): false
    fi
    ((n++));
done
 
exit 0
Код
[guest@localhost tests]$ ./t.sh
1: true
2: true
3: true
4: true
5: true
6: true
[guest@localhost tests]$
1
0 / 0 / 0
Регистрация: 28.09.2011
Сообщений: 15
01.11.2011, 13:41  [ТС] 9
спасибочки))Вы просто гений)
Было бы вообще замечательно,если бы хоть немножечко комментариев было к программке)) Please...)
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
02.11.2011, 02:16 10
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/bin/sh
# в какую программу передавать дальнейший текст
 
IFS=$'\n'
# internal field separator
# разделитель заменяется с пробелов, табуляций и перевода строки на перевод строки
# если его не установить, то пробелы будут считаться разделителями
# и массив будет иметь элементы "procedure" и "blah_blah();", а не "procedure blah_blah();"
 
a=("procedure blah_blah();" "begin" "write(a);" "read(b);" "c := a+b;" "end;")
# создаётся массив строк
 
IFS=$' \t\n'
# разделитель возвращается обратно, так как на него реагирует всё
 
#echo ${a[1]}
# вывод, чтобы удостовериться, что массив правильно создался
 
#for i in ${a[@]}; do
#    echo $i
#done
# вывод, чтобы удостовериться, что массив правильно создался
 
for n in $(seq 0 $((${#a[@]} - 1))); do
# цикл для всех индексов массива, seq - это программа (sequence)
# от "нуля" до "количество элементов - 1" включительно
    
    case $n in
    # выбрать n из перечисленных ниже
    
     0) regexp="^procedure .\+();$";;
     # regexp - это обычная переменная
     
     1) regexp="^begin$";;
     2) regexp="^write(.\+);$";;
     3) regexp="^read(.\+);$";;
     4) regexp="^. := .+.;$";;
     5) regexp="^end;$";;
    esac
    
    line=${a[n]}
    # текущий элемент заносится в удобную переменную
    
    #echo $line
    # вывод, чтобы удостовериться, что элемент правильный
    
    if echo -n "$line" | grep -qe "$regexp"; then
    # если регулярное выражение подходит,
    # то grep вернёт истину
        echo $((n + 1)): true
        # вывести n + 1 и true
    else
    # иначе grep вернёт ложь
        echo $((n + 1)): false
        # вывести n + 1 и false
    fi
    ((n++));
    # увеличить n на еденицу
done
 
exit 0
# скрипт возвращает истину в исполняющую среду
шаблоны тоже можно в массив поместить
1
0 / 0 / 0
Регистрация: 28.09.2011
Сообщений: 15
02.11.2011, 19:10  [ТС] 11
золотой Вы человек))еще раз огромное спасибо))
0
0 / 0 / 0
Регистрация: 28.09.2011
Сообщений: 15
11.11.2011, 05:50  [ТС] 12
спасибо,2ю тоже сдала!)
вот задание по 3йесли можно ,то тоже с комментами)
Реализовать Shell-программу, выполняющую функции интернет-сервера, способного выполнять команды:
auth user pass — авторизация, user и pass хранятся в файле pass в каталоге запуска программы
list — показать список приложений системы.
provide prog — передать текст программы на сервер. Ввод заканчивается символом «#», набранным в отдельной строке. Создается новое приложение, имя должно показаться командой list.
info prog — показать информацию о приложении: размер, время создания, владельца
exit — выход
help — справка по командам.

Добавлено через 2 минуты
спасибо,2ю тоже сдала!)
вот задание по 3йесли можно ,то тоже с комментами)
Реализовать Shell-программу, выполняющую функции интернет-сервера, способного выполнять команды:
auth user pass — авторизация, user и pass хранятся в файле pass в каталоге запуска программы
list — показать список приложений системы.
provide prog — передать текст программы на сервер. Ввод заканчивается символом «#», набранным в отдельной строке. Создается новое приложение, имя должно показаться командой list.
info prog — показать информацию о приложении: размер, время создания, владельца
exit — выход
help — справка по командам.

Добавлено через 1 минуту
прошу прощения,интернет глючит (
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
12.11.2011, 02:59 13
программа эмулирует сервер в консоли
поддерживает:
- авторизацию
- добавление программ
- просмотр информации о программах
Вложения
Тип файла: zip s.zip (4.4 Кб, 28 просмотров)
1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
12.11.2011, 03:45 14
поправил ошибки
Вложения
Тип файла: zip s.zip (4.6 Кб, 23 просмотров)
1
0 / 0 / 0
Регистрация: 28.09.2011
Сообщений: 15
17.11.2011, 19:44  [ТС] 15
какой кошмар)какая сложная программа)а можно чуточку комментариев к ней?)
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
18.11.2011, 01:30 16
добавил комментарии и
пример взаимодействия с сервером
Код
[guest@localhost s]$ ./server.sh
>>> (help): help

  [ Help ]

  Command    Options            Description
     auth    user password  --  authentication of user with password
     list                   --  list all programs
  provide    prog           --  upload a program to the server 
     info    prog           --  get info about the program
     help                   --  this help
     exit                   --  exit the program

>>> (help): list
Server: you should login
>>> (help): auth user password
Server: fail
>>> (help): auth u1 p1
Server: ok
>>> (help): list
  [ List ]

    1: p
    2: program
    3: program1
    4: program10
    5: program11
    6: program12
    7: program2
    8: program4
    9: program5
   10: program6
   11: program7
   12: program8
   13: program9
>>> (help): info program
server.sh: error: file corrupted
>>> (help): info p
  [ Info ]

  name: p
  owner: u1
  time: 10:50:03
  size: 34

>>> (help): provide program0
  [ Provide ]

  Write "#" at the end.

printf("Hello, World!\n");
#
>>> (help): list
  [ List ]

    1: p
    2: program
    3: program0
    4: program1
    5: program10
    6: program11
    7: program12
    8: program2
    9: program4
   10: program5
   11: program6
   12: program7
   13: program8
   14: program9
>>> (help): program0
server.sh: error: unknown command
>>> (help): info program0
  [ Info ]

  name: program0
  owner: u1
  time: 07:28:44
  size: 26

>>> (help): help

  [ Help ]

  Command    Options            Description
     auth    user password  --  authentication of user with password
     list                   --  list all programs
  provide    prog           --  upload a program to the server 
     info    prog           --  get info about the program
     help                   --  this help
     exit                   --  exit the program

>>> (help): exit

Server: goodbye
[guest@localhost s]$
Вложения
Тип файла: zip server.zip (7.4 Кб, 29 просмотров)
1
0 / 0 / 0
Регистрация: 28.09.2011
Сообщений: 15
18.11.2011, 15:48  [ТС] 17
спасибо огромное,что бы я без Вас делала)
0
0 / 0 / 0
Регистрация: 28.09.2011
Сообщений: 15
08.12.2011, 19:38  [ТС] 18
Вот еще одно задание:

имеются html-файлы, в которых встречаются адреса e-mail.
программа обрабатывает их всех и по всем адресам посылает текст "привет".
для отправки необходимо использовать собственную реализацию smtp-клиента.
!! отправку более 2-х писем только имитировать !!
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
10.12.2011, 09:32 19
находит почтовые адресы в файлах html и отправляет по ним сообщение
Код
[guest@localhost html_files]$ ./t.sh
Sending message to guest@localhost... sent... ok
Sending message to guest1@localhost... sent... ok
Sending message to x@x1.com... ok
Sending message to x@x2.com... ok
Sending message to x@x3.com... ok
Sending message to x@x4.com... ok
Sending message to x@x5.com... ok
Sending message to y@y1.com... ok
Sending message to y@y2.com... ok
Sending message to y@y3.com... ok
Sending message to y@y4.com... ok
Sending message to y@y5.com... ok
Sending message to z@z1.com... ok
Sending message to z@z2.com... ok
Sending message to z@z3.com... ok
Sending message to z@z4.com... ok
Sending message to z@z5.com... ok
[guest@localhost html_files]$ mail
Heirloom Mail version 12.4 7/29/08.  Type ? for help.
"/var/spool/mail/guest": 1 message 1 new
>N  1 guest@localhost.loca  Sat Dec 10 16:29  12/444   "Msg"
& 1
Message  1:
From guest@localhost.localdomain  Sat Dec 10 16:29:21 2011
Return-Path: <guest@localhost.localdomain>
Date: Sat, 10 Dec 2011 16:29:20 +1000
From: guest@localhost.localdomain
Subject: Msg
Status: R

привет

& d
& q
[guest@localhost html_files]$
Вложения
Тип файла: zip html_files.zip (2.3 Кб, 13 просмотров)
1
0 / 0 / 0
Регистрация: 28.09.2011
Сообщений: 15
11.12.2011, 18:34  [ТС] 20
спасиииибо!!!

Добавлено через 21 час 22 минуты
Уважаемый Аccept ))можно еще попросить чуточку комментов))было бы очень здорово)заранее спасибо)
0
11.12.2011, 18:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.12.2011, 18:34
Помогаю со студенческими работами здесь

Как прочитать с устройства хранения информации все файлы и каталоги?
В моей работе с Borland Delphi5 мне нужно прочитать с устройства хранения информации все файлы и...

Вывести на экран все файлы и каталоги соответствующие маске в полном формате
Которые начинаются на m. При этом перед выводом каждой названия экран должен выводиться запрос на...

Как посредством CMD сравнить все файлы в заданной директории и удалить файлы с одинаковым содержимым?
В папке &quot;папка&quot; находятся текстовые файлы 1.txt 2.txt 3.txt 4.txt, некоторые из этих файлов имеют...

создать каталоги YYYYDDMM\Req (например 20170105\Req) и скопировать файлы в "свои" каталоги.
Добрый день! Помогите новичку! Поставлена задача создать bat-ник. Есть несколько файлов,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru