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


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Скрипт для работы с данными  (Прочитано 4342 раз)

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

Оффлайн Симэн

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #15 : 24 Октября 2015, 12:03:44 »
find --help
BusyBox v1.23.2 (2015-10-21 23:46:35 MSK) multi-call binary.

Usage: find [-HL] [PATH]... [OPTIONS] [ACTIONS]

Search for files and perform actions on them.
First failed action stops processing of current file.
Defaults: PATH is current directory, action is '-print'

-L,-follow Follow symlinks
-H ...on command line only
-xdev Don't descend directories on other filesystems
-maxdepth N Descend at most N levels. -maxdepth 0 applies
actions to command line arguments only
-mindepth N Don't act on first N levels
-depth Act on directory *after* traversing it

Actions:
( ACTIONS ) Group actions for -o / -a
! ACT Invert ACT's success/failure
ACT1 [-a] ACT2 If ACT1 fails, stop, else do ACT2
ACT1 -o ACT2 If ACT1 succeeds, stop, else do ACT2
Note: -a has higher priority than -o
-name PATTERN Match file name (w/o directory name) to PATTERN
-iname PATTERN Case insensitive -name
-path PATTERN Match path to PATTERN
-ipath PATTERN Case insensitive -path
-regex PATTERN Match path to regex PATTERN
-type X File type is X (one of: f,d,l,b,c,...)
-perm MASK At least one mask bit (+MASK), all bits (-MASK),
or exactly MASK bits are set in file's mode
-user NAME/ID File is owned by given user
-group NAME/ID File is owned by given group
-size N[bck] File size is N (c:bytes,k:kbytes,b:512 bytes(def.))
+/-N: file size is bigger/smaller than N
-prune If current file is directory, don't descend into it
If none of the following actions is specified, -print is assumed
-print Print file name
-print0 Print file name, NUL terminated
-exec CMD ARG ; Run CMD with all instances of {} replaced by
file name. Fails if CMD exits with nonzero

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #16 : 24 Октября 2015, 12:20:28 »
Попробуйтеfind <your_path> -type d -exec sh -c '[ $(date -r "$0" +%s) -lt $(($(date +%s) - 3024000)) ]' {} \; -print
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Симэн

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #17 : 24 Октября 2015, 12:24:56 »
find /mnt/ya -type d -exec sh -c '[ $(date -r "$0" +%s) -lt $(($(date +%s) - 3024000)) ]' {} \; -printРаботает, там только таких старых файлов пока нет   :2funny:

Спасибо гуру, вы лучшие  ;)

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #18 : 24 Октября 2015, 12:26:46 »
Ну так измени значение 3024000(=35 дней) для тестирования.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Симэн

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #19 : 24 Октября 2015, 12:33:07 »
syntax error

find /mnt/ya -type d -exec sh -c '[ $(date -r "$0" +%s) -lt $(($(date +%s) - '-35 day')) ]' {} \; -print
find /mnt/ya -type d -exec sh -c '[ $(date -r "$0" +%s) -lt $(($(date +%s) - '=35 day')) ]' {} \; -print
Впрочем, кто мешает писать в секундах:

Секунд
В дне 86.400
В неделе 604.800
В месяце (30 дней) 2.592.000
В квартале (91 день) 7.862.400
В году (365 дней) 31.536.000

Поставил день, все работает:

find /mnt/ya -type d -exec sh -c '[ $(date -r "$0" +%s) -lt $(($(date +%s) - 86400)) ]' {} \; -print
Спасибо.
« Последнее редактирование: 24 Октября 2015, 12:39:43 от Симэн »

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #20 : 24 Октября 2015, 16:43:19 »
А у Вас точно Ubuntu?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #21 : 24 Октября 2015, 16:45:48 »
Вторая страница - и никто не вспомнил про logrotate?
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #22 : 24 Октября 2015, 17:02:35 »
Ну вот... при шёл AnrDaemon и всё испортил...
logrotate - не спортивно

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #23 : 24 Октября 2015, 17:05:57 »
Да, я в курсе. Это грубо и примитивно. Зато работает.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #24 : 24 Октября 2015, 17:20:47 »
Классная идея. Вопрос — нет ограничения что работает только с файлами? Просто не встречал чтоб директории обрабатывали.
И есть нюанс
Цитировать
hourly Log  files  are rotated every hour. Note that usually logrotate is configured to be run by cron daily. You have to change this configuration
              and run logrotate hourly to be able to really rotate logs hourly.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #25 : 24 Октября 2015, 17:26:47 »
Посмотри примеры в /etc/
Там можно всего навертеть скриптами.
Вообще, если программа постоянно создаёт новые файлы, тебе нет необходимости заморачиваться переменованием каталогов и перезагрузкой программы.
Пусть пишет в один каталог, твоя задача - забрать и разложить файлы, а это совсем просто.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Симэн

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #26 : 24 Октября 2015, 17:58:48 »
А у Вас точно Ubuntu?
Спалился старый  :2funny: - это я про себя...
Речь идет об ubuntu для роутеров и raspberry - братьев меньших ББ:
https://openwrt.org/
Железо:
http://wiki.openwrt.org/toh/views/toh_extended_supported
Работает
(Нажмите, чтобы показать/скрыть)

Пусть пишет в один каталог, твоя задача - забрать и разложить файлы, а это совсем просто.
Пожалуй, если речь не идет о роутере со слабым железом, и использовании Яндекс Диска.
Но все равно спасибо, попробуем и так  ;)
« Последнее редактирование: 25 Октября 2015, 11:34:40 от Симэн »

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #27 : 24 Октября 2015, 18:51:34 »
Спалился старый  :2funny: - это я про себя...
Да ну палево-то было ещё в первом сообщении
не получится, потому что версия sh не поддерживает -mtime +35
просто хотелось помочь, а то я в другие ветки почти не хожу,  уж в курилку и подавно...
Тем более до сих помню, как первый раз мастырил систему бэкапа стратегически важных данных... сложность была в жёстко ограниченном дисковом пространстве и в требовании быстрого доступа к любому кусочку этих бекапов...
Ох сколько нервов тогда было потеряно...

И что самое смешное, когда на той машине умер хард, сохранились все эти данные,... а вот сам скрипт погиб (( так как сама система бекапу не подвергалась. Ну и фиг с ним, я как вспомню какие там костыли были...
Вот так я перешёл из админов думающих начать делать бекапы, в админы делающих бекапы. )))

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #28 : 25 Октября 2015, 01:00:40 »
Симэн,
И что удаляет? Без второго -exec ??? Я грешным делом подумал что xargs придется применять для удаления…
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Симэн

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #29 : 25 Октября 2015, 04:32:17 »
Azure,
Конечно, поспешил да и папок было с 22 числа, так работает (поправил выше):
find /mnt/ya -type d -exec sh -c '[ $(date -r "$0" +%s) -lt $(($(date +%s) - 2592000)) ]' {} \; -print0 | xargs -0 rm -Rи так работает
find /mnt/ya -type d -exec sh -c '[ $(date -r "$0" +%s) -lt $(($(date +%s) - 2592000)) ]' {} \; -exec rm -R {} \;Удаляется очень долго, одно фото 1 секунда. - оптика, нормальный провайдер, нормальная скорость.
===
Неожиданно "всплыл" другой косяк, папка 23-его часа - не перемещается в папку дня автоматически.
Пока не понял почему...
« Последнее редактирование: 25 Октября 2015, 11:38:13 от Симэн »

 

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