Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: команда...  (Прочитано 830 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DIEmens

  • Автор темы
  • Активист
  • *
  • Сообщений: 378
    • Просмотр профиля
команда...
« : 31 Октября 2010, 16:15:48 »
надо написать команду в баше которая будет выполнять следующее:
найти все файлы заканчивающиеся на, пускай будет "text", если файл найден, проверить наличие в нем строки "string", если есть, сделать ссылку на этот файл. если нету установить права доступа 0644.
как это сделать одной строкой?

// Пожалуйста, ознакомьтесь с правилами форума, в особенности, с п. 2.4. Постарайтесь в дальнейшем воздержаться от создания тем с неинформативным названием.
.renaissance
« Последнее редактирование: 31 Октября 2010, 22:23:03 от .renaissance »
desktop: Ubuntu 10.04 i386
laptop: Ubuntu 10.10 amd64

Оффлайн Tupas

  • Любитель
  • *
  • Сообщений: 64
    • Просмотр профиля
Re: команда...
« Ответ #1 : 31 Октября 2010, 16:28:32 »
for i in ${find / -name *text}
do
if [ "${cat $i|grep string}" == "" ]
then
chmod $i 0644
else
ln $i
fi
done

Этот скрипт явно не работает, но в общем как-то так.

Оффлайн Zeka13

  • Старожил
  • *
  • Сообщений: 1177
  • 18.10 Gnome x64 GTX 970
    • Просмотр профиля
Re: команда...
« Ответ #2 : 31 Октября 2010, 16:31:30 »
одной строкой ?
хахах

cd example && ./example.sh
Если Wine - это костыль , то  Punto Switcher - это протез , а Daemon Tools инвалидное кресло.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: команда...
« Ответ #3 : 31 Октября 2010, 17:04:32 »
надо написать команду в баше которая будет выполнять следующее:
найти все файлы заканчивающиеся на, пускай будет "text", если файл найден, проверить наличие в нем строки "string", если есть, сделать ссылку на этот файл. если нету установить права доступа 0644.
Код: (bash) [Выделить]
find -name '*text' | while read
    do
    if [ $(grep "string" "$REPLY") ]
    then
        ln -s "$(pwd)/$REPLY" "$(pwd)/$REPLY.link"
    else
        chmod 0644 "$REPLY"
    fi
done

как это сделать одной строкой?
Код: (bash) [Выделить]
find -name '*text' | while read ; do if [ $(grep "string" "$REPLY") ] ; then ln -s "$(pwd)/$REPLY" "$(pwd)/$REPLY.link" ; else chmod 0644 "$REPLY" ; fi ; done

Оффлайн DIEmens

  • Автор темы
  • Активист
  • *
  • Сообщений: 378
    • Просмотр профиля
Re: команда...
« Ответ #4 : 31 Октября 2010, 21:55:49 »
всем спасибо)
desktop: Ubuntu 10.04 i386
laptop: Ubuntu 10.10 amd64

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: команда...
« Ответ #5 : 01 Ноября 2010, 15:01:27 »
как это сделать одной строкой?
Зачем ? Смысла нет никакого. Только, если для спортивного интереса разве что.
Лучше делать скриптом.

 

Страница сгенерирована за 0.349 секунд. Запросов: 26.