| |
| 1.3, sn, 13:52, 30/04/2009 [ответить] [смотреть все]
| +/– |
du: unrecognized option '--time'
Попробуйте 'du --help' для получения более подробного описания.
|  | | |
| 1.14, Sergii Golovatiuk, 03:07, 01/05/2009 [ответить] [смотреть все]
| +/– |
Смотрю на эти сложности и радует что народ пробует все средства для достижения цели. Задача понятна, но решение не универсальное. А что, если надо скопировать данные только за 14-16 Января 2009?
Используйте:
find -mtime +$(expr $(expr $(date +%s) - $(date -d "Jan 14 2009" +%s)) / 3600 / 24) -mtime -$(expr $(expr $(date +%s) - $(date -d "Jan 16 2009" +%s)) / 3600 / 24) -type f -exec cp {} TARGET \;
Если надо создать структуру каталогов:
find -mtime +$(expr $(expr $(date +%s) - $(date -d "Jan 14 2009" +%s)) / 3600 / 24) -mtime -$(expr $(expr $(date +%s) - $(date -d "Jan 16 2009" +%s)) / 3600 / 24) -type d -exec mkdir TARGET/{} \;
Читайте маны.
|  | | |
| |
| |
| 3.17, Проходил мимо, 18:44, 01/05/2009 [^] [ответить] [смотреть все]
| +/– |
Какойй перл?? проще ман по find почтать а не плодить велосипеды
У вас много скриптов на пер/питоне/подставить_нужное на сервере крутится? или просто лениво для примитивных задачек освоить команду man ?
P.S больше велосипедов,красивых и разных
|  | | |
|
| 2.20, Просто Лось., 04:59, 03/05/2009 [^] [ответить] [смотреть все] [показать ветку]
| +/– | |
1. Несколько лет назад BSDшный date не умел показывать произвольные даты, сейчас не знаю. Такая штука канала только для GNU.
2. Сравните скорость для большого, но обозримого количества файлов:
$ for N in 'seq 1 1 100000' ; do echo "zzz" > ./$N.testfile ; done
$ time find ./ -type f -mtime -1 -exec cp {} ../bbbbbb \;
real 4m23.219s
user 0m21.110s
sys 3m47.518s
$ time cp $(ls -1)
$ mkdir ../cccccc
$ time cp $(ls -1) ../cccccc/
real 0m5.298s
user 0m0.906s
sys 0m3.995s
$
Но с мыслью я согласен, надо использовать find.
$ time cp $(find ./ -type f -mtime -1) ../dddddd/
real 0m5.502s
user 0m0.747s
sys 0m4.310s
$
|  | | |
|
| 1.18, XoRe, 16:49, 02/05/2009 [ответить] [смотреть все]
| +/– | |
Для разового копирования пойдет)
А я бы сделал так:
for a in 'find . ...'
do
[ -d $a ] && mkdir /home/temp/$a
[ -f $a ] && cp $a /home/temp/$a
done
Хотя это кому как больше нравится/умеется/привычнее)
Кстати не указано, файлы созданы за последний месяц, или измененные за последний месяц, или к ним был доступ за последний месяц.
Хотя судя по тому, что используется ls -l, идет речь об изменении.
|  | | |
| |
| 2.22, XoRe, 16:29, 03/05/2009 [^] [ответить] [смотреть все] [показать ветку]
| +/– |
>ыы (
>
>bash: /bin/cp: Слишком длинный список аргументов
>
>Для реально большой кучи не канает.
Значит нужен for - он и 1000000 элементов может обработать)
|  | | |
| |
| 3.23, vladis, 19:55, 03/05/2009 [^] [ответить] [смотреть все]
| +/– | |
Ыхыхы. Нифига.
cp обламывается, потому что столько много аргументов не лезет в буфер командной строки шелла. for - [почти] точно такая же команда шелла с точно таким же буфером. Соответственно, for тоже обломается.
Расово верное решение здесь - передавать стопицот аргументов не через буфер, а через стандартный поток ввода-вывода. В него и двестипицот аргументов влезет:
ls -l ... | awk {...} | while read f; do something $f; done
|  | | |
| |
| 4.25, Alex, 17:15, 12/05/2009 [^] [ответить] [смотреть все]
| +/– | |
Супер. Воистину. Ровно стопицот (150000) файлов обработало.
Интересно, что
ls -tr /DIR1/DIR2/DIR3/* | while read f; ... - все-таки обломалось.
А вот
cd /DIR1/DIR2/DIR3/;
ls -tr * | while read f; ...
на ура отработало.
|  | | |
|
|
|
|
|