31

Lupo Alberto, тут проблема в логике: вы приказали:

Найди файл X, ИЛИ файл Y И выполни команду!

как вы думаете, как find выполнит ваш приказ?

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

32

drBatty пишет:

Lupo Alberto, тут проблема в логике: вы приказали:

Найди файл X, ИЛИ файл Y И выполни команду!

как вы думаете, как find выполнит ваш приказ?

Да, правильнее так

find . \( -name "*.txt" -o -name "*.m3u" \)
Был, был и весь вышел...

33

я предпочитаю так:

 Консоль:
$ find -regex '.*\.m\(p3\|3u\)'
./y.m3u
./y.mp3
./x.mp3

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

34

sergey_dydchenko пишет:

Сформировал подробный отчет в виде изображения ниже:

как рисовали? Неужели ручками?

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

35 (02.05.2014 19:03:33 отредактировано sergey_dydchenko)

Чет я поспешил радоваться в файлах .m3u замена не происходит, уверен это из-за "#" в тексте фала.
Вот пример плейлиста .m3u:

#EXTM3U
#EXTINF:1,1 Том и Джерри Часть 1 (Full Collection)
nfs-tcp://192.168.1.56:/volume1/Synology/_Video_collection/Мультфильмы/Том и Джери вся коллекция - Vol. 1 (DVD 2шт.)/Side A/
#EXTINF:2,2 Том и Джерри Часть 1 (Full Collection)
nfs-tcp://192.168.1.56:/volume1/Synology/_Video_collection/Мультфильмы/Том и Джери вся коллекция - Vol. 1 (DVD 2шт.)/Side B/

Скрипт:

#!/bin/sh
find  /volume1/test -type f \( -name "*.txt" -o  -name "*.m3u" \) -exec sed -i 's/192\.168\.1\.56/10\.0\.1\.56/g' {} \;
drBatty пишет:
sergey_dydchenko пишет:

Сформировал подробный отчет в виде изображения ниже:

как рисовали? Неужели ручками?

Да я мал и глуп, ноя учЮсь.

37

sergey_dydchenko пишет:

Чет я поспешил радоваться в файлах .m3u замена не происходит, уверен это из-за "#" в тексте фала.
Вот пример плейлиста .m3u:

нет. Вы заблуждаетесь, sed плевать хотела на #.

sergey_dydchenko пишет:

find /volume1/test -type f \( -name "*.txt" -o -name "*.m3u" \) -exec sed -i 's/192\.168\.1\.56/10\.0\.1\.56/g' {} \;

она их хоть нашла?

попробуйте так

find  /volume1/test \
-type f \
\( -name "*.txt" -o  -name "*.m3u" \) \
-print \
-exec sed -i 's/192\.168\.1\.56/10\.0\.1\.56/g' {} \;
Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

38 (02.05.2014 20:24:48 отредактировано sergey_dydchenko)

drBatty, прошу меня простить за не внимательность но задач много а я один. Ведать отвлекся малехо и попутал файлы. На самом деле Вариант от уважаемого Lupo Alberto:

#!/bin/sh
find  /volume1/test -type f \( -name "*.txt" -o  -name "*.m3u" \) -exec sed -i 's/192\.168\.1\.56/10\.0\.1\.56/g' {} \;

На аппарате Synology не работает. Да и из всех испробованных вариантов (а вариантов было опробовано много) поиска и замены, работает только вариант от Lupo Alberto:

#!/bin/sh
find /volume1/test -type f -name "*.txt" -exec sed -i 's/192\.168\.1\.56/192\.168\.178\.111/g' "{}" \;

Но в нем ограничения по форматам поиску по каталогам.
Ваш последний вариант тоже не прокатил.

В идеале на данный момент мне в скрипт нужно указать три папки:
/volume1/2D_movie_cat
/volume1/3D_movie_cat
/volume1/dune_home_cat

В данных каталогах (и подкаталогах) в файлах .txt и .m3u нужно:

найти 192.168.1.56 заменить на 10.0.1.56
найти Multimedia заменить на Family_archives


В качестве эксперемента для .m3u изменил работоспособный скрипт:

#!/bin/sh
find /volume1/test -type f -name "*.m3u" -exec sed -i 's/192\.168\.1\.56/192\.168\.178\.111/g' "{}" \;

Замена не произошла. Но после того как удалил точку в названии файла (.list.m3u) на "list.m3u", скрипт покорно сделал свое дело.

Что нужно менять в скрипте (уже согласен и на два отдельных но работоспособных на synology скрипта)?

39

sergey_dydchenko пишет:

На аппарате Synology не работает. Да и из всех испробованных вариантов (а вариантов было опробовано много)

1. я не понимаю слова "неработает". Не используйте его пожалуйста. А то ведь могу обидеть ненароком. Я человек простой, просто возьму и скажу. Например, кто и где использует метод тыка, и что им надо оторвать и куда пойти.
2. пока у вас не будет понимания, у вас ничего работать не будет. Только за деньги, чужими руками(и то, пока платите).

sergey_dydchenko пишет:

В идеале на данный момент мне в скрипт нужно указать три папки:

1. (устало повторяя Over9000й раз) нет никаких папок
2. ну и задайте.

find dir1/ dir2/ dir3/ …
sergey_dydchenko пишет:

Замена не произошла. Но после того как удалил точку в названии файла (.list.m3u) на "list.m3u", скрипт покорно сделал свое дело.

странно.

sergey_dydchenko пишет:

Что нужно менять в скрипте (уже согласен и на два отдельных но работоспособных на synology скрипта)?

посмотреть и показать вывод команды

 Консоль:
$ find --version
find (GNU findutils) 4.4.2

и
 Консоль:
$ sh --version
GNU bash, version 4.2.45(2)-release (i486-slackware-linux-gnu)

там, где у вас проблемы.

У меня всё работает.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

40 (02.05.2014 22:56:50 отредактировано sergey_dydchenko)

http://s020.radikal.ru/i710/1405/e7/95b7b3b7c9ea.jpg

Вот

41

sergey_dydchenko, ну дык а что вы голову морочите-то?
http://en.wikipedia.org/wiki/Almquist_shell
http://ru.wikipedia.org/wiki/Almquist_shell
у вас там и не будет ничего работать, кроме ls и rm -rf.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

42 (02.05.2014 23:36:36 отредактировано sergey_dydchenko)

 Консоль:
[~] # /lib/libc.so.6
GNU C Library stable release version 2.5, by Roland McGrath et al.
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.2.1.
Compiled on a Linux >>2.6.17-12-generic<< system on 2008-02-26.
Available extensions:
        crypt add-on version 2.1 by Michael Glad and others
        GNU Libidn by Simon Josefsson
        GNU libio by Per Bothner
        NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
        Native POSIX Threads Library by Ulrich Drepper et al
        Support for some architectures added on, not maintained in glibc core.
        BIND-8.2.3-T5B
Thread-local storage support included.
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.

 Консоль:
[~] # $ find --version
-sh: $: command not found
[~] #
[~] # $ sh --version
-sh: $: command not found

А вот в такой оболочке чтонить можно организавать из того что мне требуется?

drBatty прошу не ругать, ну тяжело все это дается. Очень благодарен за критику и советы. Прошу простить за потраченное на меня время.

43

sergey_dydchenko пишет:

А вот в такой оболочке чтонить можно организавать из того что мне требуется?

в какой "такой"?
хватит голову морочить, объясните, что это за CENSORED.

sergey_dydchenko пишет:

/lib/libc.so.6

я знаю, что такое glibc, при чём тут она? Читайте документацию к своей системе, там должно быть написано. Телепаты в отпуске.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

44

sergey_dydchenko пишет:

ну тяжело все это дается.

ну не удивительно. Это у вас то-ли кофемолка, то-ли роутер. Естественно консоль там чисто для отладки/настройки, а не для работы. Поставьте нормальный Linux, и изучайте на здоровье. А на таком обрубке далеко не уедешь.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

45 (13.01.2015 18:35:52 отредактировано xaleks)

Здравствуйте!
Есть вопрос по аналогичной задаче:
Имеется скрипт

IPADDR=$(ip -o -f inet addr show eth0 | sed -n 's/^.\+inet \(.\+\)\/.\+$/\1/gp')
if [ "x${IPADDR}" != "x" ]; then
        for F in `grep -r -l 'IP\.ADDRESS\.TO\.CHANGE' /file.txt`; do
                sed -i 's/IP\.ADDRESS\.TO\.CHANGE/'${IPADDR}'/g' $F;
        done
fi

Скрипт вполне себе рабочий и свою функцию выполняет, но появилась необходимость вставлять ip в виде 192-168-1-1 (т.е. не через точки, а тире, а в переменную $IPADDR попадает в виде 192.168.1.1).
Подайте идею, как это сделать.

46

xaleks пишет:

192-168-1-1 (т.е. не через точки, а тире, а в переменную $IPADDR попадает в виде 192.168.1.1).
Подайте идею, как это сделать.

идиотизм. Но если надо, то извольте:

 Консоль:
$ echo "1.2.3.4" | sed 's/\./-/g'
1-2-3-4

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

47

Спасибо за коментарий про идиотизм и отдельное спасибо за помощь

48

xaleks пишет:

Спасибо за коментарий про идиотизм

просто надоело ругаться из-за "проблемы XY"  bu

Ничего личного, но вы не первый, ваш номер Over9000. В смысле вы уже Over9000, среди тех, кто пытается решить не ту проблему, которую нужно, а создаёт себе другую.

Не хотите рассказать, что вы хотите — дело ваше.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)