Удалить файл linux по маске
подскажите как с помощью rm удалить все файлы с расширением *.txt ?
заранее спасибо.
Оглавление |
|
1. «Удалить файлы по маске *.txt» | + / – | |
Сообщение от chainik (??) on 13-Мрт-09, 11:49 | ||
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору |
2. «Удалить файлы по маске *.txt» | + / – | |
Сообщение от djaarf (??) on 13-Мрт-09, 14:28 | ||
Чудесная утилита find тебе поможет. | ||
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору |
3. «Удалить файлы по маске *.txt» | + / – | |
Сообщение от Veon (??) on 13-Мрт-09, 16:52 | ||
find /home/vasya -name «*.txt» | xargs rm В зависимости от контретной ситуации | ||
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору |
5. «Удалить файлы по маске *.txt» | + / – | |
Сообщение от djaarf (??) on 13-Мрт-09, 21:19 | ||
Можно обойтись одним find Команды для удаления большого количества файлов в LinuxУдаление старых файлов linux по маске чаще всего осуществляется следующим образом: Веб-сервер указан для примера. Синтаксис очень прост — команда принудительно удалит все файлы с расширением .log в указанном каталоге, при этом удаление будет рекурсивным(-r — recursive) и подтверждения система при этом спрашивать не будет (-f — force). При удалении таким образом очень большого количества файлов из определенного каталога может выдавать ошибки — причина в том, что система на самом деле не видит маски и разворачивает передаваемое ей выражение — срабатывает ограничение на количество аргументов, и выполнение команды прекращается. Если rm -rf не помогает — удалять файлы следует в цикле for. Для каждого файла будет отдельная операция удаления и никаких ограничений системы здесь ожидать не приходится. Синтаксис в простейшем случае может выглядеть так: for f in /var/log/apache2/*.log; do rm «$f»; done В цикл for можно добавить любую дополнительную логику. Удаление старых файлов в Linux по CronЛоги или другие файлы (сессии РНР) можно удалять как используя циклы (так приходится делать обычно если логов или других файлов накопилось действительно очень много), но если система не запущена или только создается лучше использовать регулярно выполняемое задание Cron, согласно которому с заданной периодичностью будут удаляться файлы определенных типов # m h dom mon dow command 23 3 * * * find /var/www/web/sites/server-gu.ru/www/var/session/ -type f -mtime 7 -exec rm -f <> \; В примере удаляются сессии РНР для сайта старше 7 дней. В цикле то же самое можно сделать так: for f in /tmp/logs/*.log find $f -mtime +7 -exec rm <> \; Приведенное выражение, как и любой другой цикл можно поместить в файл, сделать его исполняемым и с тем же успехом выполнять по Cron Удаление файлов по маске с фтпЕсть доступ к фтп-директории на чтение, запись, удаление. Что Я Делаю Не Так? О, теперь на ЛОРе можно говорить «руки из У тебя руки из если руки золотые, не важно откуда они растут Ты всё перепутал, это не золото. Это просто говно такого цвета. кроме анонимного ослоумия, посты будут? Полезные посты я имею ввиду Страшная поделка. IMHO удалять можно только то, что скачали. На перле или другом языке это более просто и надежно. Чем не устроил обычный ftp клиент ? Нафига этот pftp ? дебаг у pftp есть. Включить да посмотреть. Может нужно отключить интеракив в явном виде? pftp -i . ? Может на получении остальные команды игнорятся? Попробуй через скрипт отправить: У тебя руки из У тебя руки из У тебя руки из я и удаляю то что скачиваю. спасибо за пример, решением стало sleep в 200 миллисекунд между скачиванием и удалением. Достаточно взять готовые примеры и подправить Если ты знаешь bash, то понять не сложно. Вот ещё подобная тема недавно поднималась. Ну и да — вариант с задержкой я для проверки привёл. Ты не можешь быть уверен, что она всегда сработает. Раз сервер игнорит команды он будет делать это и дальше. В смысле ты подобрал задержку исходя из скорости передачи определённого объёма данных. Это случайные величины. Нельзя так делать. Нужно более надёжное решение. проблема в том что я не знаю баш, а только только учу его. Кинусь на другое, хорошего ничего не выйдет. Но я учту ваш совет на будущее, спасибо.
не знаешь и не желаешь знать про OpenSSH и rsync поподробней пожалуйста, я неофит и не не очевидна мне ваша мысль FTP протокол сам по себе очень старый, и его лучше не использовать. Лучше используйте ssh, он намного более надёжный, удобный, и безопасный. rsync решит ваши проблемы одной командой без всяких нелепых костылей и задержек. И даже более того: она умеет качать только то, что действительно необходимо скачать, а не всё подряд. Естественно она НЕ работает по FTP. Поинтересуйтесь у администратора сервера, возможно ssh там уже есть(в 146% это так). действительно, погуглив, ssh практически полноценная замена ftp.
обычная практика: держать SSH для себя, и FTP для клиентов. Потому что 95% клиентов FTP достаточно. Ну потому доступ по SSH по умолчанию либо закрыт, либо открыт, но о нём вам не рассказали. Просто надо пообщаться с администратором, обычно SSH доступ дают без проблем.
нет. Ssh это намного больше, чем «заменитель ftp». И беглое гугленье вам не поможет, там Over9000 возможностей, потому вы скорее вссего наткнулись не совсем на то, что вам нужно. Наверное на sftp. Это конечно годно, но это только один из вариантов. для вашего случая ИМХО оптимально rsync over ssh, если конечно на сервере есть rsync(если нет, то rsync тоже можно, но sftp в этом случае не хуже). понял, просто для админа сервера я «немного продвинутый клиент», поэтому ssh мне точно не светит. Но спасибо, уже копаю в этом направлении, ваш пост оказался мегаполезен.
учитывая, что 95% клиентов _полные_ _идиоты_, а оставшиеся 5% — суперхакеры с ЧСВ Over9000, то такой клиент как вы — просто счастье ☺ |