The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Выборка и копирование файлов по дат..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Выборка и копирование файлов по дат..."  +/
Сообщение от auto_tips on 30-Апр-09, 12:11 
Столкнулся с такой задачей: из каталога необходимо выбрать и скопировать кучу файлов за один месяц.
Вооружившись командами cp, ls  и awk я приступил и вот что получилось:

   cp $(ls -l | grep 2009-01 | awk '{print $8}') /home/temp/

ls -l выводит содержимое каталога с датой
grep соответственно выбирает файлы за месяц
awk '{print $8}' выводит имя файла для команды cp

Дальше больше ...
Есть каталог в котором куча подкаталогов и в которых соответственно файлы, которые надо скопировать.
Тут на помощь приходит утилита du:

   cp $(du -a --time | grep 2009-01 | awk '{print $4}') /home/temp/

URL:
Обсуждается: https://www.opennet.ru/tips/info/2055.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от Manefesto on 30-Апр-09, 12:11 
а что find освоить не судьба ?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от prapor (??) on 30-Апр-09, 12:29 
Ну, там еще один момент есть, пайпу из грепа в авк можно убрать, оставив все авку:
ls | awk '/2009-01/ {print $8}'
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от sn (??) on 30-Апр-09, 13:52 
du: unrecognized option `--time'
Попробуйте `du --help' для получения более подробного описания.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от Nemo (??) on 30-Апр-09, 14:00 
Зачем так изварщаться? Когда есть команда find !
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от Vardan on 30-Апр-09, 15:01 
Chelowek ze napisal
Выборка и копирование файлов по дате............
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

9. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от Alexander email(??) on 30-Апр-09, 15:51 
у find есть еще и -exec
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

6. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от Pervert on 30-Апр-09, 15:24 
midnight commander
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от angel_il on 30-Апр-09, 15:37 
mc этого пока не умеет.
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

16. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от User294 (ok) on 01-Май-09, 18:29 
>mc этого пока не умеет.

Пардон, отсортировать по дате, выделить и скопировать.Что он там не умеет?Если надо 1 раз - вполне вариант.Правда если это надо регулярно, сие превращается в вариант для неленивых мартышек.А ленивые городят вот такие конструкции :)

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

24. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от pro100master (ok) on 06-Май-09, 17:37 
вложенные папки и файлы не умеет. Да и если, судя по /tmp там 200к файлов и больше, клавишу отдавите :)))
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

8. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от Alexander email(??) on 30-Апр-09, 15:49 
Что за ОС у топикстартера? BSD?

Вот в Archlinux (локаль ru_RU.utf8):

ls -l | awk '/Янв/{print $9}'

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

13. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от Dan (??) on 30-Апр-09, 19:57 
а при чем тут BSD?
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

21. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от Просто Лось. on 03-Май-09, 05:01 
При формате вывода ls.
Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

10. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от sys (??) on 30-Апр-09, 17:01 
А если в имени файл будет такая дата?
Используйте find - это логичнее.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

11. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от bogus (??) on 30-Апр-09, 18:01 
гы гы гы, улыбнуло, больше нечего сказать.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

12. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от Аноним (??) on 30-Апр-09, 18:16 
Мда, find освоить не судьба... Чайники пишут mini-HOWTO на opennet?
Файлы с пробелами в именах обработаны не будут.
Пользуйтесь
find . -type f -mtime -30 -print0 | xargs -0 cp -t targetdir/
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

14. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от Sergii Golovatiuk on 01-Май-09, 03:07 
Смотрю на эти сложности и радует что народ пробует все средства для достижения цели. Задача понятна, но решение не универсальное. А что, если надо скопировать данные только за 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/{} \;

Читайте маны.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

15. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от Crazy Alex on 01-Май-09, 15:28 
Чем ваять такое, проще скрипт в три строки на перле каком написать.
Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

17. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от Проходил мимо on 01-Май-09, 18:44 
Какойй перл?? проще ман по find почтать а не плодить велосипеды
У вас много скриптов на пер/питоне/подставить_нужное на сервере крутится? или просто лениво для примитивных задачек освоить команду man ?
P.S больше велосипедов,красивых и разных
Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

20. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от Просто Лось. on 03-Май-09, 04:59 
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
$

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

18. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от XoRe (ok) on 02-Май-09, 16:49 
Для разового копирования пойдет)

А я бы сделал так:
for a in `find . ...`
do
[ -d $a ] && mkdir /home/temp/$a
[ -f $a ] && cp $a /home/temp/$a
done

Хотя это кому как больше нравится/умеется/привычнее)

Кстати не указано, файлы созданы за последний месяц, или измененные за последний месяц, или к ним был доступ за последний месяц.

Хотя судя по тому, что используется ls -l, идет речь об изменении.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

19. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от Просто Лось. on 03-Май-09, 04:33 
ыы (

bash: /bin/cp: Слишком длинный список аргументов

Для реально большой кучи не канает.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

22. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от XoRe (ok) on 03-Май-09, 16:29 
>ыы (
>
>bash: /bin/cp: Слишком длинный список аргументов
>
>Для реально большой кучи не канает.

Значит нужен for - он и 1000000 элементов может обработать)

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

23. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от vladis email on 03-Май-09, 19:55 
Ыхыхы. Нифига.

cp обламывается, потому что столько много аргументов не лезет в буфер командной строки шелла. for - [почти] точно такая же команда шелла с точно таким же буфером. Соответственно, for тоже обломается.

Расово верное решение здесь - передавать стопицот аргументов не через буфер, а через стандартный поток ввода-вывода. В него и двестипицот аргументов влезет:

ls -l ... | awk {...} | while read f; do something $f; done

Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

25. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от Alex (??) on 12-Май-09, 17:15 
Супер. Воистину. Ровно стопицот (150000) файлов обработало.

Интересно, что

ls -tr /DIR1/DIR2/DIR3/* | while read f; ... - все-таки обломалось.

А вот

cd /DIR1/DIR2/DIR3/;
ls -tr * | while read f; ...

на ура отработало.

Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

26. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от начинающий юзер on 11-Сен-13, 10:19 
... и всё таки хотелось бы увидеть полноценный bash-скрипт для копирования/перемещения файликов с одинаковой датой (или одинаковым месяцем)
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

27. "Выборка и копирование файлов по дате в Linux"  +/
Сообщение от Алексей email(??) on 08-Май-14, 10:48 
Здорово было бы еще команду заиметь которая копирует только файлы созданные в настоящий день, т.е. с датой создания совпадающей с датой установленной на сервере.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру