The OpenNET Project / Index page

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

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

"find: экранирование спец. символов"  
Сообщение от GHopper email(ok) on 10-Фев-09, 05:08 
Здравствуйте!
Скрипт для чистки FTP-хранилища:

# cat clearftp
#!/bin/sh

ftp_root="/usr/home/ftp";
ftp_folders="games misc music progs video";

for folder in $ftp_folders
do
    find ${ftp_root}/${folder} -ctime +20 -type f -exec rm {} \;
    find ${ftp_root}/${folder} -type d -empty -exec rmdir {} \;
done

Проблема в том, что после запуска сыпятся ошибки:


find: /usr/home/ftp/games/cabal for koshak: No such file or directory
find: /usr/home/ftp/games/Titan Quest: No such file or directory
...
find: /usr/home/ftp/games/cabal for koshak: No such file or directory
find: /usr/home/ftp/games/Titan Quest: No such file or directory
...

т.е. проблемы как минимум две - символ ' ', и символы кирилицы. Подскажите пожалуйста как победить проблему?
Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

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


1. "find: экранирование спец. символов"  
Сообщение от allez (ok) on 10-Фев-09, 07:03 
>т.е. проблемы как минимум две - символ ' ', и символы кирилицы.
>Подскажите пожалуйста как победить проблему?

Для удаления файлов с пробелами в именах используйте кавычки:

find ${ftp_root}/${folder} -ctime +20 -type f -exec rm "{}" \;
find ${ftp_root}/${folder} -type d -empty -exec rmdir "{}" \;

P. S. А что не так с кириллицей?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "find: экранирование спец. символов"  
Сообщение от GHopper email(ok) on 10-Фев-09, 07:15 
>>т.е. проблемы как минимум две - символ ' ', и символы кирилицы.
>>Подскажите пожалуйста как победить проблему?
>
>Для удаления файлов с пробелами в именах используйте кавычки:
>
find ${ftp_root}/${folder} -ctime +20 -type f -exec rm "{}" \; 
>find ${ftp_root}/${folder} -type d -empty -exec rmdir "{}" \;

>
>P. S. А что не так с кириллицей?


find: /usr/home/ftp/games/CS_Demo_21012009: No such file or directory
find: /usr/home/ftp/games/WoWTBC1/Interface.20090202-144651/AddOns: No such file or directory
find: /usr/home/ftp/games/WoWTBC1/WTF: No such file or directory
find: /usr/home/ftp/games/WoWTBC1/WTF.20090202-144651: No such file or directory
find: /usr/home/ftp/progs/����� ����� (7): No such file or directory
find: /usr/home/ftp/progs/glofiish X650/Additional Applications: No such file or directory
find: /usr/home/ftp/progs/glofiish X650/OUTLOOK: No such file or directory

не помогло

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "find: экранирование спец. символов"  
Сообщение от allez (ok) on 10-Фев-09, 07:23 
>find: /usr/home/ftp/games/CS_Demo_21012009: No such file or directory
>find: /usr/home/ftp/games/WoWTBC1/Interface.20090202-144651/AddOns: No such file or directory
>find: /usr/home/ftp/games/WoWTBC1/WTF: No such file or directory
>find: /usr/home/ftp/games/WoWTBC1/WTF.20090202-144651: No such file or directory

Заметьте, в этих именах нет ни пробелов, ни символов кириллицы.

>find: /usr/home/ftp/progs/����� ����� (7): No such file or directory
>find: /usr/home/ftp/progs/glofiish X650/Additional Applications: No such file or directory
>find: /usr/home/ftp/progs/glofiish X650/OUTLOOK: No such file or directory
>
>не помогло

Значит, поиски собачьего захоронения придется продолжить. :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "find: экранирование спец. символов"  
Сообщение от GHopper email(ok) on 10-Фев-09, 07:31 
>[оверквотинг удален]
>
>Заметьте, в этих именах нет ни пробелов, ни символов кириллицы.
>
>>find: /usr/home/ftp/progs/����� ����� (7): No such file or directory
>>find: /usr/home/ftp/progs/glofiish X650/Additional Applications: No such file or directory
>>find: /usr/home/ftp/progs/glofiish X650/OUTLOOK: No such file or directory
>>
>>не помогло
>
>Значит, поиски собачьего захоронения придется продолжить. :)

Действительно... что-то тут не чисто! Где и что она поназарывала здесь??? Буду думать...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "find: экранирование спец. символов"  
Сообщение от allez (ok) on 10-Фев-09, 18:06 
>Действительно... что-то тут не чисто! Где и что она поназарывала здесь??? Буду
>думать...

Попробуйте на всякий случай проверить файловую систему на разделе, который монтируется в /usr.
Кстати, у вас FreeBSD или /usr/home создан по каким-то своим соображениям?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "find: экранирование спец. символов"  
Сообщение от GHopper (ok) on 10-Фев-09, 18:31 
>>Действительно... что-то тут не чисто! Где и что она поназарывала здесь??? Буду
>>думать...
>
>Попробуйте на всякий случай проверить файловую систему на разделе, который монтируется в
>/usr.
>Кстати, у вас FreeBSD или /usr/home создан по каким-то своим соображениям?

FreeBSD 7

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "find: экранирование спец. символов"  
Сообщение от Andrey Mitrofanov on 10-Фев-09, 13:01 
>find ${ftp_root}/${folder} -type d -empty -exec rmdir "{}" \;

while find -type d -empty -print0|xargs -0 --no-run-if-empty rmdir; do :; done

Правильнее удалять пустые директории так, с циклом. Когда удаляется одна или несколько пустых директорий, их "родители", не бывшие пустыми, -- станосятся ими...

Ну, и "ещё один" способ экранирования - в комплекте.

>P. S. А что не так с кириллицей?

Да, с ней _всё_ не так. В URL-ях - не так. С русскими именами, когда ФС монтируется с одним чарсетом, имена файлов создаются с другим, ФС перемонтируется с третьим, сервер отдаёт клиенту в четвёртом, -- у клиента какой-то "не так". А ещё при этом на терминале пятый чарсет, в терминале админа -- шестой, у клиента седьмой... И все, попарно?, разные.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "find: экранирование спец. символов"  
Сообщение от ACCA (ok) on 10-Фев-09, 10:19 
 
#!/bin/sh
ftp_root="/usr/home/ftp";
ftp_folders="games misc music progs video";

for folder in $ftp_folders
do
    find ${ftp_root}/${folder} -ctime +20 -type f -print0 | xargs -0 rm
    find ${ftp_root}/${folder} -type d -empty -print0 | xargs -0 rmdir
done

Иначе будешь разбираться, как {} интерпретирует Unicode.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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