|
2.2, prapor (??), 12:29, 30/04/2009 [^] [^^] [^^^] [ответить]
| +/– |
Ну, там еще один момент есть, пайпу из грепа в авк можно убрать, оставив все авку:
ls | awk '/2009-01/ {print $8}'
| |
|
1.3, sn (??), 13:52, 30/04/2009 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
du: unrecognized option '--time'
Попробуйте 'du --help' для получения более подробного описания.
| |
|
2.5, Vardan (?), 15:01, 30/04/2009 [^] [^^] [^^^] [ответить]
| +/– |
Chelowek ze napisal
Выборка и копирование файлов по дате............
| |
|
|
|
3.16, User294 (ok), 18:29, 01/05/2009 [^] [^^] [^^^] [ответить]
| +/– |
>mc этого пока не умеет.
Пардон, отсортировать по дате, выделить и скопировать.Что он там не умеет?Если надо 1 раз - вполне вариант.Правда если это надо регулярно, сие превращается в вариант для неленивых мартышек.А ленивые городят вот такие конструкции :)
| |
|
4.24, pro100master (ok), 17:37, 06/05/2009 [^] [^^] [^^^] [ответить]
| +/– |
вложенные папки и файлы не умеет. Да и если, судя по /tmp там 200к файлов и больше, клавишу отдавите :)))
| |
|
|
|
1.8, Alexander (??), 15:49, 30/04/2009 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Что за ОС у топикстартера? BSD?
Вот в Archlinux (локаль ru_RU.utf8):
ls -l | awk '/Янв/{print $9}'
| |
1.10, sys (??), 17:01, 30/04/2009 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
А если в имени файл будет такая дата?
Используйте find - это логичнее.
| |
1.12, Аноним (-), 18:16, 30/04/2009 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Мда, find освоить не судьба... Чайники пишут mini-HOWTO на opennet?
Файлы с пробелами в именах обработаны не будут.
Пользуйтесь
find . -type f -mtime -30 -print0 | xargs -0 cp -t targetdir/
| |
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 (ok), 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 (ok), 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; ...
на ура отработало.
| |
|
|
|
1.26, начинающий юзер (?), 10:19, 11/09/2013 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
... и всё таки хотелось бы увидеть полноценный bash-скрипт для копирования/перемещения файликов с одинаковой датой (или одинаковым месяцем)
| |
1.27, Алексей (??), 10:48, 08/05/2014 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Здорово было бы еще команду заиметь которая копирует только файлы созданные в настоящий день, т.е. с датой создания совпадающей с датой установленной на сервере.
| |
|