Показать полную графическую версию : Удаление файлов со служебными символами в названии
UserName1989
28-10-2018, 12:31
Добрый день!
Имеется скрипт для удаления всех файлов из папки, кроме трёх последних:
find . -type f | head -n -3 | xargs -0 rm
Но возникает ошибка: No such file or directory.
Каким образом это можно исправить?
Пусть $% file - это файл со спецсимволами в имени.
1. Взять имя файла в двойные или одинарные кавычки: rm '$ %file'
2. Экранировать спецсимволы в имени файла используя '\'
3. Добавить "--" перед rm:rm -v -- "$% file"
4. Можно удалить файл по inode: ls -li dirname
# Например inode нужного файла будет 123456
find . -inum 123456 -delete
CyberDaemon
14-11-2018, 11:47
Имеется скрипт »
Результат работы этого скрипта может сильно отличаться от ожидаемого:
- если есть подкаталоги - то find спустится туда и выдаст файлы еще и из них.
- "последние файлы" - это по какому критерию?
отображаемый результат команды
find . -type f | head -n -3
это именно то, что планируется стереть?
А ошибка возникает вовсе не из-за спецсимволов, а из-за -0 в опциях xargs
UserName1989
14-11-2018, 16:33
CyberDaemon, изменил глубину поиска
find . -maxdepth 1 -type f | head -n -$FileCount | xargs rm
"Последние" - по алфавиту.
Планируется стереть все файлы, кроме последних $FileCount.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.