Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/39: Рейтинг темы: голосов - 39, средняя оценка - 4.82
 Аватар для SNake Ice
0 / 0 / 0
Регистрация: 20.04.2010
Сообщений: 36

Bash-распаковщик архивов

02.04.2011, 04:25. Показов 8800. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Есть такое задание:
1) Поднять ftp.
2) Распаковать все архивы форматов *.zip, *.rar в папках и подпапках, затем удалить эти архивы, оставив распакованные файлы.
3) Перевести названия распакованных файлов в кодировку, приемлемую для OpenSuse 11 (приоритетная)и, по возможности, для других Linux-систем.

Сделано. Частично сделано. Не сделано.

Наработки по второму пункту:
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
#!/bin/bash
function parse_dir() { 
    for i in $1/* 
    do 
        if [ -d "$i" ] 
        then 
            echo "entering recursion\.\.\.\n" 
            parse_dir $i
        elif [ -f "$i" ] 
        then 
            for j in *[rR][aA][rR]
            do 
                echo "extracting $j\.\.\.\n"
                unrar x "$j" 
            done 
            for j in *[zZ][iI][pP]
            do 
                echo "extracting $j\.\.\.\n"
                unzip "$j" 
            done 
        fi 
    done 
} 
 
parse_dir "./"
Естественно, хотелось бы иметь один скрипт сразу для второго и третьего пунктов... По третьему пункту вообще никаких соображений нет. И ещё, при проверке скрипта на Ubuntu 10.10 была обнаружена ошибка в 15 строке.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.04.2011, 04:25
Ответы с готовыми решениями:

Распаковщик псевдо архивов
Суть такая Нужно написать распаковщик псевдо архивов. http://i26.***********/big/2012/0527/2c/76dbe7d72ac3573a5530c75d5d1c682c.jpg ...

Bash скирпт на удаление старх файлов-архивов
Доброе время суток. Есть расшраренная папка /arc/backup/ в нее кидаются файлы MSSQL сервера (отдельной прогой) + создается архив...

Распаковщик не отрабатывает WK_KEYDOWN
#include "TetrisClass.h" Tetris* Tetris::ptr = NULL; Tetris::Tetris() { ptr=this; } //---------------------------------/ ...

47
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
02.04.2011, 13:11
Студворк — интернет-сервис помощи студентам
Твоя синтаксическая ошибка у меня не проявляется. На всякий случай покажи "ls -l /bin/bash", мало ли, у тебя это ссылка на другой интерпретатор.
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13441 / 7534 / 831
Регистрация: 09.09.2009
Сообщений: 29,554
02.04.2011, 13:12
попробуй заменить конструкцию `команда` на $(команда), но скорее всего проблема как сказал Evg, в именах файлов и папок с пробелами. попробуй переменную брать в двойные кавычки
0
 Аватар для SNake Ice
0 / 0 / 0
Регистрация: 20.04.2010
Сообщений: 36
02.04.2011, 13:15  [ТС]
Code
1
2
3
4
5
snakeice@snakeice-Aspire-5552G:~$ ls -l /bin/bash
-rwxr-xr-x 1 root root 801808 2010-08-11 06:58 /bin/bash
snakeice@snakeice-Aspire-5552G:~$ cd '/home/snakeice/Рабочий стол/1' 
snakeice@snakeice-Aspire-5552G:~/Рабочий стол/1$ ls -l /bin/bash-rwxr-xr-x 1 root root 801808 2010-08-11 06:58 /bin/bash
snakeice@snakeice-Aspire-5552G:~/Рабочий стол/1$
На тебе из обоих мест.

Добавлено через 2 минуты
Dmitry, а она ли не в двойных?
Bash
1
                unrar x "$j"
Или какую?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
02.04.2011, 13:19
Да у тебя рекурсия неправильно построена Если у нас каталог, то мы рекурсивно вызываем. Если не каталог, то делаем ещё раз ls и хз что делаем
0
 Аватар для SNake Ice
0 / 0 / 0
Регистрация: 20.04.2010
Сообщений: 36
02.04.2011, 13:22  [ТС]
Evg, помоги исправить, пожалуйста! И, при возможности, выложи весь скрипт, и пусть он удаляет архивы после распаковки, а распакованные файлы оставляет!
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
02.04.2011, 13:29
Просто печатаем имена архивных файлов. Внутренности напиши сам. Тут не будет работать с именами, содержащими пробел. Надо будет строку с for исправить, только с ходу пока не втыкаю как. Надо делать примерно так, как ты делал изначально, но так подцепятся только имена файлов с пробелами, но не подцепятся папки с пробелами (а точнее файлы в папках с пробелами)

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
#!/bin/bash
 
function parse_dir()
{ 
  local dir="$1";
  local i j
 
  for i in `ls $dir` ; do 
    local f="$dir/$i";
 
    if [ -d "$f" ] ; then 
      echo "entering $f" 
      parse_dir $f
    elif [ -f "$f" ] ; then 
      case "$f" in
        *.[rR][aA][rR])
          echo "rar file $f"
          ;;
        *.[zZ][iI][pP])
          echo "zip file $f"
          ;;
      esac
    fi 
  done 
}
 
parse_dir "."
0
 Аватар для SNake Ice
0 / 0 / 0
Регистрация: 20.04.2010
Сообщений: 36
02.04.2011, 13:40  [ТС]
Тем не менее, спасибо! Будет готовый результат, скину!

Добавлено через 4 минуты
Code
1
2
3
4
5
6
snakeice@snakeice-Aspire-5552G:~$ cd '/home/snakeice/Рабочий стол/1' 
snakeice@snakeice-Aspire-5552G:~/Рабочий стол/1$ bash ./scr-4.sh
: команда не найдена: 
'/scr-4.sh: строка 3: ошибка синтаксиса около неожиданной лексемы `
'/scr-4.sh: строка 3: `function parse_dir()
snakeice@snakeice-Aspire-5552G:~/Рабочий стол/1$
Чепялька...
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
02.04.2011, 13:55
А номера строк к чему привязаны? В моём примере на 3-й строке объявление функции
0
 Аватар для SNake Ice
0 / 0 / 0
Регистрация: 20.04.2010
Сообщений: 36
02.04.2011, 13:57  [ТС]
Бяда какая-то...
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
02.04.2011, 13:58
Ты для начала сделай так, чтобы все имена были без пробелов. На всякий случай.

Добавлено через 13 секунд
И без букв "я" (оно код 255 имеет)

Добавлено через 20 секунд
Цитата Сообщение от SNake Ice Посмотреть сообщение
Бяда какая-то...
Так ты мой скрипт запускал или свой или чего?
0
 Аватар для SNake Ice
0 / 0 / 0
Регистрация: 20.04.2010
Сообщений: 36
02.04.2011, 13:59  [ТС]
Твой запускал!
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
02.04.2011, 14:00
В первой строке вместо "#!/bin/bash" напиши "#!/bin/bash -x" и покажи результат запуска
0
 Аватар для SNake Ice
0 / 0 / 0
Регистрация: 20.04.2010
Сообщений: 36
02.04.2011, 14:07  [ТС]
Code
1
2
3
4
5
6
7
8
9
10
11
12
snakeice@snakeice-Aspire-5552G:~$ cd'/home/snakeice/Рабочий стол/1' 
bash: cd/home/snakeice/Рабочий стол/1: Нет такого файла или каталога
snakeice@snakeice-Aspire-5552G:~$ cd '/home/snakeice/Рабочий стол/1' 
snakeice@snakeice-Aspire-5552G:~/Рабочий стол/1$ bash scr-5.sh
: команда не найдена
'cr-5.sh: строка 3: ошибка синтаксиса около неожиданной лексемы `
'cr-5.sh: строка 3: `function parse_dir()
snakeice@snakeice-Aspire-5552G:~/Рабочий стол/1$ bash ./scr-5.sh
: команда не найдена: 
'/scr-5.sh: строка 3: ошибка синтаксиса около неожиданной лексемы `
'/scr-5.sh: строка 3: `function parse_dir()
snakeice@snakeice-Aspire-5552G:~/Рабочий стол/1$
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
02.04.2011, 14:13
И запускай "./scr-5.sh" (а перед этим добавь права на исполнение), а не "bash scr-5.sh"
0
 Аватар для SNake Ice
0 / 0 / 0
Регистрация: 20.04.2010
Сообщений: 36
02.04.2011, 14:15  [ТС]
Code
1
2
3
4
5
6
7
snakeice@snakeice-Aspire-5552G:~$ cd '/home/snakeice/Рабочий стол/1' 
snakeice@snakeice-Aspire-5552G:~/Рабочий стол/1$ sudo bash ./scr-5.sh 
[sudo] password for snakeice: 
: команда не найдена: 
'/scr-5.sh: строка 3: ошибка синтаксиса около неожиданной лексемы `
'/scr-5.sh: строка 3: `function parse_dir()
snakeice@snakeice-Aspire-5552G:~/Рабочий стол/1$
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
02.04.2011, 14:20
Ещё раз:

Цитата Сообщение от Evg Посмотреть сообщение
И запускай "./scr-5.sh" (а перед этим добавь права на исполнение), а не "bash scr-5.sh"
0
 Аватар для SNake Ice
0 / 0 / 0
Регистрация: 20.04.2010
Сообщений: 36
02.04.2011, 14:22  [ТС]
Мозг работает через раз... Давай по пунктам...
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
02.04.2011, 14:28
Ты пишешь в консоли "sudo bash ./scr-5.sh". Вместо этого надо писать просто "./scr-5.sh" (безо всякого упоминания про bash)
0
 Аватар для SNake Ice
0 / 0 / 0
Регистрация: 20.04.2010
Сообщений: 36
02.04.2011, 14:35  [ТС]
Code
1
2
3
4
snakeice@snakeice-Aspire-5552G:~$ cd '/home/snakeice/Рабочий стол/1' 
snakeice@snakeice-Aspire-5552G:~/Рабочий стол/1$ ./scr-5.sh
bash: ./scr-5.sh: Отказано в доступе
snakeice@snakeice-Aspire-5552G:~/Рабочий стол/1$
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
02.04.2011, 14:39
Ы-ы-ы....

Цитата Сообщение от Evg Посмотреть сообщение
И запускай "./scr-5.sh" (а перед этим добавь права на исполнение), а не "bash scr-5.sh"
Закрой файл в редакторе (если он там открыт) и набери в консоли "chmod +x scr-5.sh"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.04.2011, 14:39

Распаковщик на lzma sdk
Мне нужно написать распаковщик на lzma sdk Так вот как поместить сжатые файлы внутри exe 1) Поместить архивы в ресурсы и выгрузить...

Скрипт распаковщик zip, tgz, rar
Подскажите пожалуйста скрипт, распаковывающий на сервере любой из вышеперечисленных архивов. Спасибо.

Посоветуйте небольшой распаковщик RAR-файлов
Посоветуйте небольшой распаковщик RAR-файлов. Заранее спасибо!

Bash, как в awk передать переменную из bash
Есть такой скрипт for (( i=0; i < $(awk 'END{print NR - 2}' /proc/net/dev); i++)) do echo $ $(ip link | awk 'FNR == $i {print $2}')...

хочу узнать вашу мнение о Упаковщик+распаковщик UPX
хочу узнать вашу мнение о Упаковщик+распаковщик UPX


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru