Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Linux и FreeBSD » Программирование в *nix » Удаление файлов со служебными символами в названии

Ответить
Настройки темы
Удаление файлов со служебными символами в названии

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день!
Имеется скрипт для удаления всех файлов из папки, кроме трёх последних:
Код: Выделить весь код
 find . -type f | head -n -3 | xargs -0 rm
Но возникает ошибка: No such file or directory.
Каким образом это можно исправить?

Отправлено: 12:31, 28-10-2018

 

Аватара для Dimon

Ветеран


Сообщения: 548
Благодарности: 11

Профиль | Отправить PM | Цитировать


Пусть $% file - это файл со спецсимволами в имени.
1. Взять имя файла в двойные или одинарные кавычки:
PHP код: Выделить весь код

rm '$  %file' 


2. Экранировать спецсимволы в имени файла используя '\'
3. Добавить "--" перед rm:
PHP код: Выделить весь код

rm --- "$%  file" 


4. Можно удалить файл по inode:
PHP код: Выделить весь код

ls -li dirname

# Например inode нужного файла будет 123456
find . -inum 123456 -delete 

-------
Патроны кончаются... Санитары близко... Всем пока


Отправлено: 20:35, 28-10-2018 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для CyberDaemon

DOOMer


Contributor


Сообщения: 3245
Благодарности: 437

Профиль | Отправить PM | Цитировать


Цитата UserName1989:
Имеется скрипт »
Результат работы этого скрипта может сильно отличаться от ожидаемого:
- если есть подкаталоги - то find спустится туда и выдаст файлы еще и из них.
- "последние файлы" - это по какому критерию?

отображаемый результат команды
Код: Выделить весь код
find . -type f | head -n -3
это именно то, что планируется стереть?

А ошибка возникает вовсе не из-за спецсимволов, а из-за -0 в опциях xargs

-------
"640 K ought to be enough for anybody" Bill Gates, 1981


Отправлено: 11:47, Вчера | #3


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


CyberDaemon, изменил глубину поиска

Код: Выделить весь код
find . -maxdepth 1 -type f | head -n -$FileCount | xargs rm
"Последние" - по алфавиту.
Планируется стереть все файлы, кроме последних $FileCount.

Отправлено: 16:33, Вчера | #4



Компьютерный форум OSzone.net » Linux и FreeBSD » Программирование в *nix » Удаление файлов со служебными символами в названии

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удаление папки с иероглифами в названии Sisin Скриптовые языки администрирования Windows 8 25-09-2017 16:01
Любой язык - Удаление первых символов в названии файла sim22x Скриптовые языки администрирования Windows 5 28-08-2017 20:03
CMD/BAT - [решено] Удаление всех файлов кроме указанных, с содержанием указанных букв в названии mrG0bliN Скриптовые языки администрирования Windows 11 15-04-2016 14:07
CMD/BAT - [решено] Удаление через wmic программ с хитрыми символами в названии Elven Скриптовые языки администрирования Windows 1 02-03-2016 15:10
VBS/WSH/JS - Помогите плиз со скриптом на удаление файлов. t3rr0r Скриптовые языки администрирования Windows 5 28-11-2012 16:26




 
Переход