Бывает такое, что, например, прислали с Windows-машины zip архив с русскими именами файлов. А zip с кодировками не знаком, правило в «чужой монастырь со своим уставом…» не слыхивал и вообще подозрительный тип, при распаковке в среде с другой локалью (говорят, что даже не другом Windows, если там по умолчанию не русская стоит, будут проблемы) получаем файлы с нечитаемыми названиями, а то ещё и в папке с таким же именем:
user@desktop: ~ $ ls Работа Документы ?????? Список.zip |
При попытке удалить наш вопросительный файл при помощи файлового менеджера получаем сообщение, что такого файла нет. А для удаления посредством rm надо как-то напечатать имя файла, которое состоит из непечатных символов. Как быть? Нужен какой-то универсальный идентификатор файлов и папок. И в *nix он есть, имя ему inode. Чтобы его узнать есть у ls ключик -i:
user@desktop: ~ $ ls -i 339 Работа 23987 Документы 40801 ?????? 40790 Список.zip |
Номер, стоящий слева от имени и есть inode файла. Теперь дело за малым, найти файл по этому номеру на диске, прочитать его точное имя и выгнать вон (в моём случае это папка с файлами, по этому rm -r):
user@desktop: ~ $ find . -inum 40801 -exec rm -r {} \; |
Либо, если не хочется быть столь радикальными, можно попробовать переименовать:
user@desktop: ~ $ find . -inum 40801 -exec mv {} Список \; |
Разберёмся в написаном:
find ищет файлы в указанной директории (точка «.» означает текущую директорию), по какому-то критерию, в данном случае указан -inum, значит ищем по inode. Как только файл нашелся, исполняем команду (-exec команда \;), передавая ей точное имя найденного файла при помощи {}.
Если там один файл, то можно сделать просто:
user@desktop: ~ $ find . -inum 40801 -delete |
Спасибо! Очень актуально сейчас. 🙂
Иноды — весчь!
Блин ну у луноходов вечно обычные пользовательские действия вызывают замыкание головного мозга 😀 Файлы такие удаляются с помощью mc без всяких извращений с консолью и аргумент «.» команде find чтобы искать файлы в текущей директории ставить не надо
Если есть один метод значит ли это что другие нужно уничтожить? Если есть карандаш зачем тогда шариковая ручка?
Линукс тем и полезен что предоставляет обилие форм и методов работы на любой вкус.
В системах автоматизации трудновато будет использовать mc.
ps: Ух ты! настоящий тролль? А правда что вы без пищи можете впасть в спячку?