Привет. делаю простенький скрипт: найти все файлы к которым обращались (и создавались) в ноябре месяце (при условии что сегодня 6-е декабря)
$ ls
-rw-rw---- 1 larisa users 42496 2006-07-04 11:33 Май 2006 ДУ.xls
-rw-rw---- 1 alexandr users 27136 2006-04-28 11:23 Март 2006 ДУ.xls
-rw-rw---- 1 larisa users 35840 2006-11-29 13:13 Октябрь 2006 ДУ.xls$ find . -type f -atime -36 -atime +6
./Октябрь 2006 ДУ.xlsнаходит. однако если я пытаюсь копировать найденное в /var/local/tmp, то вот такие ошибки:
$ find . -type f -atime -36 -atime +6 | xargs cp -p /var/local/tmp
cp: указанная цель `ДУ.xls' не является каталогомили по другому так:
$ for i in `find . -type f -atime -16 -atime +6`; do cp -p $i /var/local/tmp;done
cp: невозможно выполнить stat для `./Октябрь': No such file or directory
cp: невозможно выполнить stat для `2006': No such file or directory
cp: невозможно выполнить stat для `ДУ.xls': No such file or directoryмне кажется что это проблема в в русских названиях и пробелах в именах файлов.
Как это побороть?
>Привет. делаю простенький скрипт: найти все файлы к которым обращались (и создавались)
>в ноябре месяце (при условии что сегодня 6-е декабря)
>$ ls
>-rw-rw---- 1 larisa users 42496 2006-07-04 11:33 Май 2006 ДУ.xls
>
>-rw-rw---- 1 alexandr users 27136 2006-04-28 11:23 Март 2006 ДУ.xls
>-rw-rw---- 1 larisa users 35840 2006-11-29 13:13 Октябрь 2006 ДУ.xls
>
>
>$ find . -type f -atime -36 -atime +6
>./Октябрь 2006 ДУ.xls
>
>находит. однако если я пытаюсь копировать найденное в /var/local/tmp, то вот такие
>ошибки:
>
>$ find . -type f -atime -36 -atime +6 | xargs cp
>-p /var/local/tmp
>cp: указанная цель `ДУ.xls' не является каталогом
>
>или по другому так:
>$ for i in `find . -type f -atime -16 -atime +6`;
>do cp -p $i /var/local/tmp;done
>cp: невозможно выполнить stat для `./Октябрь': No such file or directory
>cp: невозможно выполнить stat для `2006': No such file or directory
>cp: невозможно выполнить stat для `ДУ.xls': No such file or directory
>
>мне кажется что это проблема в в русских названиях и пробелах в
>именах файлов.
>
>Как это побороть?man find и man xargs на предмет кличей -print0 и -0.
>>Как это побороть?
>
>man find и man xargs на предмет кличей -print0 и -0.к сожалению, мне не удалось.
$ find . -type f -atime -36 -atime +6 -print0 | xargs -0 cp - /var/local/tmp
cp: указанная цель `./Октябрь (ДУ).xls' не является каталогом
$ find . -type f -atime -36 -atime +6 -print0 | xargs -0 cp /var/local/tmp
cp: пропуск каталога `/var/local/tmp'но удалось вот так:
$ find . -type f -atime -36 -atime +6 -print0 | cpio -dump /var/local/tmp &>/dev/null
>но удалось вот так:
>$ find . -type f -atime -36 -atime +6 -print0 | cpio -dump /var/local/tmp &>/dev/null
поторопился с выводами, тут копирует только 1-н найденный файл :(
>>но удалось вот так:
>>$ find . -type f -atime -36 -atime +6 -print0 | cpio -dump /var/local/tmp &>/dev/null
> поторопился с выводами, тут копирует только 1-н найденный файл :(с -print скопирует как мне нужно :)
всем спасибо, тема закрыта. (правда с xargs cp так и не удалось победить)
>>>но удалось вот так:
>>>$ find . -type f -atime -36 -atime +6 -print0 | cpio -dump /var/local/tmp &>/dev/null
>> поторопился с выводами, тут копирует только 1-н найденный файл :(
>
>с -print скопирует как мне нужно :)
>всем спасибо, тема закрыта. (правда с xargs cp так и не удалось
>победить)
$ find . -type f -atime -36 -atime +6 -print | xargs -0 cp /var/local/tmp /dev/null
и так не работает?
>>>>но удалось вот так:
>>>>$ find . -type f -atime -36 -atime +6 -print0 | cpio -dump /var/local/tmp &>/dev/null
>>> поторопился с выводами, тут копирует только 1-н найденный файл :(
>>
>>с -print скопирует как мне нужно :)
>>всем спасибо, тема закрыта. (правда с xargs cp так и не удалось
>>победить)
>$ find . -type f -atime -36 -atime +6 -print | xargs -0 cp /var/local/tmp /dev/null
>и так не работает?нет.
cp: указанная цель `./Октябрь (ДУ).xls\n' не является каталогом
>>>>>но удалось вот так:
>>>>>$ find . -type f -atime -36 -atime +6 -print0 | cpio -dump /var/local/tmp &>/dev/null
>>>> поторопился с выводами, тут копирует только 1-н найденный файл :(
>>>
>>>с -print скопирует как мне нужно :)
>>>всем спасибо, тема закрыта. (правда с xargs cp так и не удалось
>>>победить)
>>$ find . -type f -atime -36 -atime +6 -print | xargs -0 cp /var/local/tmp /dev/null
>>и так не работает?
>
>нет.
>
>cp: указанная цель `./Октябрь (ДУ).xls\n' не является каталогом
чёрт возьми, тогда пробуй как описано в man-e, и не парь:
find . -type f -atime -36 -atime +6 -print0 | xargs -0 -J % cp -rp % /var/local/tmp
>>cp: указанная цель `./Октябрь (ДУ).xls\n' не является каталогом
>чёрт возьми, тогда пробуй как описано в man-e, и не парь:
>find . -type f -atime -36 -atime +6 -print0 | xargs -0
>-J % cp -rp % /var/local/tmpНу или просто
find . -type f -atime -36 -atime +6 | while read i; do cp -p "$i" /var/local/tmp ;done
>>>но удалось вот так:
>>>$ find . -type f -atime -36 -atime +6 -print0 | cpio -dump /var/local/tmp &>/dev/null
>> поторопился с выводами, тут копирует только 1-н найденный файл :(
>
>с -print скопирует как мне нужно :)
>всем спасибо, тема закрыта. (правда с xargs cp так и не удалось
>победить)
xarg условие обязательное? Если нет, то:
find . -type f -atime -36 -atime +6 -exec cp "{}" /var/local/tmp ";"