Здравейте! Вероятно използвате блокиращ рекламите софтуер. В това няма нищо нередно, много хора го правят.

     Но за да помогнете този сайт да съществува и за да имате достъп до цялото съдържание, моля, изключете блокирането на рекламите.

  Ако не знаете как, кликнете тук

Помощ за скрипт, който да разархивира всички 7z архиви  [РЕШЕНА]

feed Всичко свързано с Линукс. Новини, проблеми, въпроси.
Десктоп Линукс дистибуции, сървърни Линукс дистрибуции, Линукс дистрибуции с общо предназначение, Linux Mint, Ubuntu, Arch Linux, Mandriva, PCLinuxOS, openSUSE, Fedora, Red Hat Enterprise Linux, CentOS, Suse Linux Enterprise Server, Debian, Cross Linux from Scratch, Slackware, Gentoo. Графични среди, новини, игри, драйвъри, въпроси, десктоп, сървър, браузъри, помощ.
Нова тема Отговори
Потребителски аватар
Валсо
Дарител
Дарител
Мнения: 12635
Регистриран: нед мар 03, 2019 20:29
Репутация: 45555
пол: Мъж
Местоположение: ~/$USER
Контакти:

Помощ за скрипт, който да разархивира всички 7z архиви

Мнение от Валсо »

Взех този скрипт

Код: Избери всички

for name in *.mka; 
do 
    newname=$(echo "$name" | rev | cut -f 2- -d '.' | rev)
    ffmpeg -i "$name" -vn -ar 44100 -ac 2 -ab 640k -f ac3 "$newname".ac3;
done
и го модифицирах така:

Код: Избери всички

for name in *.7z; 
do 
    newname=$(echo "$name" | rev | cut -f 2- -d '.' | rev)
    7z x "$name" "$newname/" -mmt=8;
done
като функцията му би трябвало да е ясна: разархивиране на всички 7z файлове в директорията, като създаде нови папки с името на съответния архив и там да сложи съдържанието на всеки разопакован архив. Обаче не иска да разархвира нищо. Това е изходът от терминала, след като изпълня скрипта:

Код: Избери всички

Extracting archive: Btx98lhpqtnm5.7z
--
Path = Btx98lhpqtnm5.7z
Type = 7z
Physical Size = 12371317
Headers Size = 192
Method = LZMA2:12m
Solid = +
Blocks = 1


No files to process
Everything is Ok

Files: 0
Size:       0
А пък оригиналният скрипт за конвертиране на mka към ac3 работи прекрасно. :-k

Въпросът е защо 7z скриптът не работи?
Прочетено: 300 пъти
Потребителски аватар
cprog
Почетен член
Почетен член
Мнения: 1531
Регистриран: нед юли 19, 2015 08:19
Репутация: 14067
пол: Мъж

Re: Помощ за скрипт, който да разархивира всички 7z архиви

Мнение от cprog »

В началото на скрипта сложи -x , тоест да стане #!/bin/bash -x , за да ти покаже какво прави.
CPU~Dual core AMD Athlon 64 X2 5200+ (-MCP-) speed~2700 MHz (max) Kernel~4.15.0-33-generic x86_64 Up~1 day Mem~4869.6/7976.7MB HDD~2400.5GB(45.8% used) Procs~313 Client~Shell inxi~2.3.56
Потребителски аватар
Валсо
Дарител
Дарител
Мнения: 12635
Регистриран: нед мар 03, 2019 20:29
Репутация: 45555
пол: Мъж
Местоположение: ~/$USER
Контакти:

Re: Помощ за скрипт, който да разархивира всички 7z архиви

Мнение от Валсо »

Код: Избери всички

/usr/bin/env: „bash -x“: Няма такъв файл или директория
/usr/bin/env: използвайте „-[v]S“, за да подавате опции към реда, почващ с „#!“
Ама и с "-[v]S" дава същото.
Потребителски аватар
bvbfan
Почетен член
Почетен член
Мнения: 2803
Регистриран: нед юни 14, 2015 07:02
Репутация: 18724
пол: Мъж

Re: Помощ за скрипт, който да разархивира всички 7z архиви

Мнение от bvbfan »

Не ти е нужно да генерираш име на директория,

Код: Избери всички

newname=$(echo "$name" | rev | cut -f 2- -d '.' | rev)
това маха разширението и взема само името, но 7Zip ще направи това и без ти да му казваш.

Код: Избери всички

for name in *.7z; 
do 
    7z е "$name"
done
от p4p » пет окт 07, 2016 19:13 написа:В тоя раздел нищо не разбираме от Windows. :)
Потребителски аватар
Валсо
Дарител
Дарител
Мнения: 12635
Регистриран: нед мар 03, 2019 20:29
Репутация: 45555
пол: Мъж
Местоположение: ~/$USER
Контакти:

Re: Помощ за скрипт, който да разархивира всички 7z архиви  [РЕШЕНА]

Мнение от Валсо »

Не е точно така, както го казваш, но така или иначе се оправих и го направих да работи.

Код: Избери всички

7z e -y "$name" -o"$newname/"
И сега вади съдържанието на файловете, където трябва.
Потребителски аватар
cprog
Почетен член
Почетен член
Мнения: 1531
Регистриран: нед юли 19, 2015 08:19
Репутация: 14067
пол: Мъж

Re: Помощ за скрипт, който да разархивира всички 7z архиви

Мнение от cprog »

Валсо написа:
нед фев 04, 2024 08:07

Код: Избери всички

/usr/bin/env: „bash -x“: Няма такъв файл или директория
/usr/bin/env: използвайте „-[v]S“, за да подавате опции към реда, почващ с „#!“
Ама и с "-[v]S" дава същото.
Махни /usr/bin/env и на негово място сложи #!/bin/bash -x, за да видиш ефекта, ако не си, защото съобщението за грешка явно показва, че ползваш /usr/bin/env, а не чисто #!/bin/bash -x
Трябва да стане и с /usr/bin/env , но не съм тествал още.

Може ли да сложиш целия код наскриптада го разгледам заедно с първия ред, както е при теб
CPU~Dual core AMD Athlon 64 X2 5200+ (-MCP-) speed~2700 MHz (max) Kernel~4.15.0-33-generic x86_64 Up~1 day Mem~4869.6/7976.7MB HDD~2400.5GB(45.8% used) Procs~313 Client~Shell inxi~2.3.56
Потребителски аватар
Валсо
Дарител
Дарител
Мнения: 12635
Регистриран: нед мар 03, 2019 20:29
Репутация: 45555
пол: Мъж
Местоположение: ~/$USER
Контакти:

Re: Помощ за скрипт, който да разархивира всички 7z архиви

Мнение от Валсо »

cprog написа:
пон фев 05, 2024 02:06
Махни /usr/bin/env и на негово място сложи #!/bin/bash -x, за да видиш ефекта, ако не си, защото съобщението за грешка явно показва, че ползваш /usr/bin/env, а не чисто #!/bin/bash -x
Трябва да стане и с /usr/bin/env , но не съм тествал още.

Може ли да сложиш целия код наскриптада го разгледам заедно с първия ред, както е при теб
Когато Мозо за първи път ми даде скрипт преди не-знам-вече-колко години, го даде с /usr/bin/env и аз така го ползвам навсякъде. А на доста места пък изобщо не пиша нищо за първи ред.

Код: Избери всички

#!/usr/bin/env bash

for name in *.7z; 
do 
    newname=$(echo "$name" | rev | cut -f 2- -d '.' | rev)
    7z e -y "$name" -o"$newname/" -mmt=8;
done
Потребителски аватар
cprog
Почетен член
Почетен член
Мнения: 1531
Регистриран: нед юли 19, 2015 08:19
Репутация: 14067
пол: Мъж

Re: Помощ за скрипт, който да разархивира всички 7z архиви

Мнение от cprog »

Валсо написа:
пон фев 05, 2024 05:28
cprog написа:
пон фев 05, 2024 02:06
Махни /usr/bin/env и на негово място сложи #!/bin/bash -x, за да видиш ефекта, ако не си, защото съобщението за грешка явно показва, че ползваш /usr/bin/env, а не чисто #!/bin/bash -x
Трябва да стане и с /usr/bin/env , но не съм тествал още.

Може ли да сложиш целия код наскриптада го разгледам заедно с първия ред, както е при теб
Когато Мозо за първи път ми даде скрипт преди не-знам-вече-колко години, го даде с /usr/bin/env и аз така го ползвам навсякъде. А на доста места пък изобщо не пиша нищо за първи ред.

Код: Избери всички

#!/usr/bin/env bash

for name in *.7z; 
do 
    newname=$(echo "$name" | rev | cut -f 2- -d '.' | rev)
    7z e -y "$name" -o"$newname/" -mmt=8;
done
Когато използваш

Код: Избери всички

#!/usr/bin/env 
за да поадаеш аргументи на шела трябва да ползваш следния синтаксис:

Код: Избери всички

#! /usr/bin/env -S bash -x
сега тествах
CPU~Dual core AMD Athlon 64 X2 5200+ (-MCP-) speed~2700 MHz (max) Kernel~4.15.0-33-generic x86_64 Up~1 day Mem~4869.6/7976.7MB HDD~2400.5GB(45.8% used) Procs~313 Client~Shell inxi~2.3.56
Нова тема Отговори

  • Подобни теми
    Отговори
    Преглеждания
    Последно мнение

Върни се в “Линукс - инсталация, настройки, проблеми”