Два простеньких скрипта.

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
zik
мл. сержант
Сообщения: 134
Зарегистрирован: 2007-05-24 21:14:01
Откуда: Одесса
Контактная информация:

Два простеньких скрипта.

Непрочитанное сообщение zik » 2007-09-26 20:54:49

Здраствуйте.
Стоит такая задача:
1) Надо написать скрипт который будет удалять битые сылки с каталогов, пытаюсь через file организовать, но пока что-то несильн ополучается ... :( Например команда file выводит такой результат:

Код: Выделить всё

root# file Bremenskie
Bremenskie: broken symbolic link to `../../unsorted/Video/HDD24/MF/Russian/Bremenskie'
Как отделить ту часть и скрипт реагировал на фразу broken symbolic link to и удалял битую сылку.

2) Удалять те файлы которым большее месяца ( это для файло помойки ). Тоже проблема, как выдернуть дату с создания файла. Задача распространеённая и думаю многие с ней сталкивались. Может у кого завалялся скрипт :)

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Два простеньких скрипта.

Непрочитанное сообщение Alex Keda » 2007-09-27 0:48:54

Код: Выделить всё

/tmp/test/>ll
total 0
-rw-r--r--  1 lissyara  wheel  0 27 сен 01:47 aaaaa1
lrwxr-xr-x  1 lissyara  wheel  5 27 сен 01:46 bbbbbbbbbb1 -> aaaaa
lrwxr-xr-x  1 lissyara  wheel  6 27 сен 01:47 bbbbbbbbbb2 -> aaaaa1
/tmp/test/>file b
bbbbbbbbbb1@  bbbbbbbbbb2@
/tmp/test/>file bbbbbbbbbb1
bbbbbbbbbb1: broken symbolic link to `aaaaa'
/tmp/test/>file bbbbbbbbbb2
bbbbbbbbbb2: symbolic link to `aaaaa1'
/tmp/test/>file bbbbbbbbbb1| grep broken | wc -l
       1
/tmp/test/>file bbbbbbbbbb2 | grep broken | wc -l
       0
/tmp/test/>                        
думаю - дальше догадаешься?
============
про дату - find c соответствующими параметрами.
Убей их всех! Бог потом рассортирует...

Аватара пользователя
zik
мл. сержант
Сообщения: 134
Зарегистрирован: 2007-05-24 21:14:01
Откуда: Одесса
Контактная информация:

Re: Два простеньких скрипта.

Непрочитанное сообщение zik » 2007-09-27 21:31:32

С файлами которые несоответсвуют дате разобрался. Удаляет файлы к которым необращались месяц и они весят более 10 мб.

Код: Выделить всё

find /ftp/home/ -atime +30 -size +20480 -print -delete


А с битыми сылками что-то запутался :( Пытался сделать так, но что-то несильно получилось ....

Код: Выделить всё

find ./ -type l -print | xarg file | grep broken | xargs rm  
пытался сделать так, но потом понял, что это полный бред и меня заклинило :( Буду благодарен за любую подсказку.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Два простеньких скрипта.

Непрочитанное сообщение Alex Keda » 2007-09-28 0:23:52

Код: Выделить всё

#!/bin/sh

du -a /paht/to/dir |
{
      while read file_path
      do
      if [ `file ${file_path}| grep broken | wc -l` -eq 1 ]
      then
             rm $file_path
       fi
      done
}
непроверял, писал сходу.
рекомендую програнть гденить на тестовой дире не с правами рута - чтоб лишнего не снесло если пойдёт не так.
Убей их всех! Бог потом рассортирует...

stgib
рядовой
Сообщения: 15
Зарегистрирован: 2007-08-01 4:43:26

Re: Два простеньких скрипта.

Непрочитанное сообщение stgib » 2007-09-29 22:20:36

по поводу битых симлинков:
test(1) писал(а): If file is a symbolic link, test will fully dereference it and then eval-
uate the expression against the file referenced, except for the -h and -L
primaries.
find(1) писал(а): find -L /usr/ports/packages -type l -delete
Delete all broken symbolic links in /usr/ports/packages.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Два простеньких скрипта.

Непрочитанное сообщение Alex Keda » 2007-09-30 0:16:43

во. век учись - дураком помрёшь. :)
буду знать.
Убей их всех! Бог потом рассортирует...

Аватара пользователя
zik
мл. сержант
Сообщения: 134
Зарегистрирован: 2007-05-24 21:14:01
Откуда: Одесса
Контактная информация:

Re: Два простеньких скрипта.

Непрочитанное сообщение zik » 2007-10-02 16:32:50

Код: Выделить всё

find -L /usr/ports/packages -type l -delete
Он так удаляет все линки, даже не битые

Аватара пользователя
zik
мл. сержант
Сообщения: 134
Зарегистрирован: 2007-05-24 21:14:01
Откуда: Одесса
Контактная информация:

Re: Два простеньких скрипта.

Непрочитанное сообщение zik » 2007-10-02 16:54:49

Код: Выделить всё

#!/bin/sh

du -a /ftp/film/ |
{
      while read file_path
      do
      if [ `file ${file_path}| grep broken | wc -l` -eq 1 ]
      then
             rm $file_path
       fi
      done
}
и скриптик тоже не работает , хотя логически он верен :(

Может я непрвавильно обьяснил: есть сылки на папки с фмльмами, в них есть битые сылки - вот их и надо удалить !

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Два простеньких скрипта.

Непрочитанное сообщение Alex Keda » 2007-10-02 16:55:10

:)
Убей их всех! Бог потом рассортирует...

Аватара пользователя
zik
мл. сержант
Сообщения: 134
Зарегистрирован: 2007-05-24 21:14:01
Откуда: Одесса
Контактная информация:

Re: Два простеньких скрипта.

Непрочитанное сообщение zik » 2007-10-02 17:38:45

Я б тоже улыбнулся, если всё не было так печально :(
Может какие-то мысли есть у кого-то ?! )

stgib
рядовой
Сообщения: 15
Зарегистрирован: 2007-08-01 4:43:26

Re: Два простеньких скрипта.

Непрочитанное сообщение stgib » 2007-10-02 22:34:00

zik писал(а):

Код: Выделить всё

find -L /usr/ports/packages -type l -delete
Он так удаляет все линки, даже не битые
Не битые ссылки find резолвит:
find(1) писал(а): -L Cause the file information and file type (see stat(2)) returned
for each symbolic link to be those of the file referenced by the
link, not the link itself
. If the referenced file does not
exist, the file information and type will be for the link itself.
Если у вас не так, то наверное стоит отправить баг репорт или хотя бы задать вопрос в -questions.