выборка файлов по дате создания
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- проходил мимо
выборка файлов по дате создания
Имеется директория в которой ~14000 файлов , с добавлением каждый день . Появилось желание написать скрипт , который делал бы следующее --
искал файлы в этой директории по месяцу( по какой то дате ) создания и перемещал их созданную папку с именем месяца . Вроде всё просто !
а чем найти ?
find с таким количеством файлов отказывается работать , чем можно выбрать ?
ОС Freebsd
искал файлы в этой директории по месяцу( по какой то дате ) создания и перемещал их созданную папку с именем месяца . Вроде всё просто !
а чем найти ?
find с таким количеством файлов отказывается работать , чем можно выбрать ?
ОС Freebsd
Услуги хостинговой компании Host-Food.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/
Тарифы на виртуальные сервера (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/
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: выборка файлов по дате создания
В смысле find отказывается?
Чем аргументирует?
Чем аргументирует?
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
-
- проходил мимо
Re: выборка файлов по дате создания
find /data/* -ctime +200 -ls
find: Argument list too long
find: Argument list too long
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: выборка файлов по дате создания
А если вывод в файл перенаправить?
И звезда вроде не обязательна.
И звезда вроде не обязательна.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
-
- проходил мимо
Re: выборка файлов по дате создания
а что даст вывод в файл ?
нужно найти файлы определённого месяца после черо их переместить в другую папку . ман find тоже не сказал как выбрать по дате , с именами можно .
обычный листинг ls -l /data |grep Nov . насколько я понимаю грепом просто делаю выборку а как нужное направить куда надо
нужно найти файлы определённого месяца после черо их переместить в другую папку . ман find тоже не сказал как выбрать по дате , с именами можно .
обычный листинг ls -l /data |grep Nov . насколько я понимаю грепом просто делаю выборку а как нужное направить куда надо
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: выборка файлов по дате создания
А если так:
Имя каждого файла, попадающего под условие записывается в файл testfile - это для теста
ну а для переноса:
Код: Выделить всё
find /data/ -ctime +200 -exec echo {} >> testfile \;
ну а для переноса:
Код: Выделить всё
find /data/ -ctime +200 -exec mv {} каталог_назначения \;
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
- dmtr
- ст. прапорщик
- Сообщения: 545
- Зарегистрирован: 2009-11-06 22:01:34
- Откуда: с Ростова
Re: выборка файлов по дате создания
шо-то сдаетя мне дело не в количестве. у меняfind с таким количеством файлов отказывается работать
Код: Выделить всё
find /* -ctime +200 -ls
This game has no name. It will never be the same.
-
- проходил мимо
Re: выборка файлов по дате создания
-ctime +200 -exec cp {} /data/ \;
/sbin/find: Argument list too long.
/sbin/find: Argument list too long.
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: выборка файлов по дате создания
Код: Выделить всё
find /data/ -type f -ctime +200 -exec cp {} "каталог_назначения" \;
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
-
- проходил мимо
Re: выборка файлов по дате создания
аналогично . ни чего не помогает
- dmtr
- ст. прапорщик
- Сообщения: 545
- Зарегистрирован: 2009-11-06 22:01:34
- Откуда: с Ростова
Re: выборка файлов по дате создания
што-то мне не нравится
то
то
тоfind: Argument list too long
покажите/sbin/find: Argument list too long.
Код: Выделить всё
# uname -r
# which find
This game has no name. It will never be the same.
-
- проходил мимо
Re: выборка файлов по дате создания
это копи паст find: Argument list too long полный с /sbin/find: Argument list too long
which find
/usr/bin/find
7.2-RELEASE-p8
боевая машина . в других директориях где нормальное количество файлов всё работает с разными ключами .
была история тоже с find: Argument list too long при удалении find . -ctime +30 -exec rm решалась с помощью find . -ctime +30 |xargs rm . но в данном случае и xargs не помогает .
which find
/usr/bin/find
7.2-RELEASE-p8
боевая машина . в других директориях где нормальное количество файлов всё работает с разными ключами .
была история тоже с find: Argument list too long при удалении find . -ctime +30 -exec rm решалась с помощью find . -ctime +30 |xargs rm . но в данном случае и xargs не помогает .
- dmtr
- ст. прапорщик
- Сообщения: 545
- Зарегистрирован: 2009-11-06 22:01:34
- Откуда: с Ростова
Re: выборка файлов по дате создания
я возможно не туда копаю, но
если
откуда
если
Код: Выделить всё
which find
/usr/bin/find
почему /sbin/find?полный с /sbin/find: Argument list too long
This game has no name. It will never be the same.
-
- старшина
- Сообщения: 427
- Зарегистрирован: 2008-10-03 18:52:02
Re: выборка файлов по дате создания
Код: Выделить всё
remcomp% ls -l -D "%F" /usr/local/etc | head
total 574
drwxr-xr-x 3 root wheel 512 2011-01-31 CORBA
drwxr-xr-x 5 root wheel 512 2011-01-31 ConsoleKit
-r--r--r-- 1 root wheel 588 2010-06-07 GeoIP.conf.default
drwxr-xr-x 2 root wheel 512 2011-01-31 PolicyKit
drwxr-xr-x 5 root wheel 512 2011-01-31 X11
drwxr-xr-x 5 root wheel 512 2011-02-01 apache22
-r--r--r-- 1 root wheel 164 2010-06-07 aspell.ver
drwxr-xr-x 3 root wheel 512 2011-01-31 avahi
drwxr-xr-x 2 root wheel 512 2011-01-31 bash_completion.d
remcomp% cat sort_by_date.sh
#!/bin/sh
src_dir=$1
dst_dir=$2
ls -l -D "%F" ${src_dir} | grep -v ^total | awk '{print $6,$7}' |
(
while read d n
do
mkdir -p ${dst_dir}/${d}
cp -R ${src_dir}/${n} ${dst_dir}/${d}/
done
)
remcomp% sudo ./sort_by_date.sh /usr/local/etc /tmp/sorted
remcomp% ll /tmp/sorted/
total 14
drwxr-xr-x 3 root wheel 512 2 фев 19:14 2009-09-11
drwxr-xr-x 2 root wheel 512 2 фев 19:14 2009-12-28
drwxr-xr-x 2 root wheel 512 2 фев 19:14 2010-06-07
drwxr-xr-x 2 root wheel 512 2 фев 19:14 2010-06-30
drwxr-xr-x 4 root wheel 512 2 фев 19:14 2011-01-30
drwxr-xr-x 27 root wheel 1024 2 фев 19:14 2011-01-31
drwxr-xr-x 7 root wheel 512 2 фев 19:14 2011-02-01
-
- старшина
- Сообщения: 427
- Зарегистрирован: 2008-10-03 18:52:02
Re: выборка файлов по дате создания
по поводу * в ком. строке:
если указываем:
то программа command получит первым параметром /usr/ports/*
если указываем:
то шелл перед вызовом command заменит параметр на список файлов. т.е. command будет вызвана так:
отсюда и Argument list too long, т.к. find, в твоем случае, получит ~14000 параметров.
если указываем:
Код: Выделить всё
%command "/usr/ports/*"
если указываем:
Код: Выделить всё
%command /usr/ports/*
Код: Выделить всё
%command /usr/ports/CHANGES /usr/ports/GIDs /usr/ports/INDEX-6 ...
-
- проходил мимо
Re: выборка файлов по дате создания
Огромное Спасибо за помощь , скрипт не много модифицировал работает как надо
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: выборка файлов по дате создания
Так а в чем причина была?
С find так и не удалось ?
С find так и не удалось ?
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: выборка файлов по дате создания
Что за опция у ls -D "%F" перерыл ман - ничего не нашел во FreeBSD ?rmn писал(а):Код: Выделить всё
remcomp% ls -l -D "%F" /usr/local/etc | head
Под линукс - есть такая опция.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
-
- старшина
- Сообщения: 427
- Зарегистрирован: 2008-10-03 18:52:02
Re: выборка файлов по дате создания
Код: Выделить всё
-D format
When printing in the long (-l) format, use format to format the
date and time output. The argument format is a string used by
strftime(3). Depending on the choice of format string, this may
result in a different number of columns in the output. This
option overrides the -T option.
Код: Выделить всё
remcomp% uname -a
FreeBSD remcomp 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Mon Jan 31 12:43:32 EET 2011 root@:/usr/obj/usr/src/sys/REMCOMP i386
-
- проходил мимо
Re: выборка файлов по дате создания
find не работает ( как писалось выше ) если число файлов ( аргументов ) превышает 3094
ls | wc -l
3100
find * -mtime +10 -print
/sbin/find: Argument list too long.
Не работате , Предел
ls | wc -l
3093
find * -mtime +10 -print
1289227257.M89348P79332V00000058I004730AC_102
1289227257.M897212P79332V00000058I004730E3_157
1289227257.M936218P79332V00000058I004730E4_158
1289227257.M948282P79332V00000058I004730E5_159
1289227257.M968154P79332V00000058I004730E6_160
1289227258.M47627P79332V00000058I004730E7_161
1289227258.M95261P79332V00000058I004730E8_162
1289227277.M849968P79333V00000058I00472AB8_0
Всё Ок
Потом стал выбирать ls ом , но не знал как перенаправить дальше . Ещё раз СПС за скрипт .
P.S Предел для find 3093 .
На FreeBsd
ls -l ${src_dir} | grep ${Month} | awk '{print($6,$9)}' |
(
while read d n
do
mv ${src_dir}/${n} ${dst_dir}/
done
)
ls | wc -l
3100
find * -mtime +10 -print
/sbin/find: Argument list too long.
Не работате , Предел
ls | wc -l
3093
find * -mtime +10 -print
1289227257.M89348P79332V00000058I004730AC_102
1289227257.M897212P79332V00000058I004730E3_157
1289227257.M936218P79332V00000058I004730E4_158
1289227257.M948282P79332V00000058I004730E5_159
1289227257.M968154P79332V00000058I004730E6_160
1289227258.M47627P79332V00000058I004730E7_161
1289227258.M95261P79332V00000058I004730E8_162
1289227277.M849968P79333V00000058I00472AB8_0
Всё Ок
Потом стал выбирать ls ом , но не знал как перенаправить дальше . Ещё раз СПС за скрипт .
P.S Предел для find 3093 .
На FreeBsd
ls -l ${src_dir} | grep ${Month} | awk '{print($6,$9)}' |
(
while read d n
do
mv ${src_dir}/${n} ${dst_dir}/
done
)
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: выборка файлов по дате создания
2 rmn
Ясно:
# uname -a
Такой опции нет, а ведь полезная
2 dump
Есть ограничение, но оно должне решаться через xargs.
Вот только нужно подумать что меньше\оптимальнее будет - интересно, потестирую.
Ясно:
# uname -a
Код: Выделить всё
FreeBSD 7.3-RELEASE-p4
2 dump
Есть ограничение, но оно должне решаться через xargs.
Вот только нужно подумать что меньше\оптимальнее будет - интересно, потестирую.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
-
- старшина
- Сообщения: 427
- Зарегистрирован: 2008-10-03 18:52:02
Re: выборка файлов по дате создания
kpp писал(а):2 rmn
Ясно:
# uname -aТакой опции нет, а ведь полезнаяКод: Выделить всё
FreeBSD 7.3-RELEASE-p4
Код: Выделить всё
remcomp% stat -t "%F" -f "%Sm %N" /usr/local/etc/* | head
2011-01-31 /usr/local/etc/CORBA
2011-01-31 /usr/local/etc/ConsoleKit
2010-06-07 /usr/local/etc/GeoIP.conf.default
2011-01-31 /usr/local/etc/PolicyKit
2011-01-31 /usr/local/etc/X11
2011-02-01 /usr/local/etc/apache22
2010-06-07 /usr/local/etc/aspell.ver
2011-01-31 /usr/local/etc/avahi
2011-01-31 /usr/local/etc/bash_completion.d
2011-01-31 /usr/local/etc/dbus-1
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: выборка файлов по дате создания
Из выражения:
нужно обязательно убрать *
Если файлов очень много (ошибка Argument list too long) , делать через xargs
Долго не мог найти как "получить" каждый файл, для передачи его в команды, например cp или mv
Подсказку с примером нашел здесь:
http://www.mkssoftware.com/docs/man1/xargs.1.asp
Код: Выделить всё
find /data/* -ctime +200 -ls
Если файлов очень много (ошибка Argument list too long) , делать через xargs
Код: Выделить всё
find /data/ -ctime +200 -print0 | xargs -0 -I '{}' cp {} "каталог_назначения"
Подсказку с примером нашел здесь:
http://www.mkssoftware.com/docs/man1/xargs.1.asp
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
-
- проходил мимо
Re: выборка файлов по дате создания
очень полезная ссылка СПС , тоже долго искал что то вразумительное про xargs