LINUX.ORG.RU

Удалить файлы с кракозябрами в именах

 , , , ,


1

2

Добрый день! При распаковывании архива получил пару файлов и пару директорий с кракозябрами вместо имён (видимо содержимое архива была в cp1251 или какой-то другой Windows-кодировке). Вот так это выглядит в Dolphin (файловый менеджер KDE) и вот так в терминале. Когда пробую удалить в Dolphin получаю сообщение The file or folder does not exist и то же самое при попытке переименовать. Пробовал набрать в терминале rm -rf path_to_file (благо там вопросительными знаками обработалась часть), но безрезультатно. Как можно избавиться от этих артефактов?

★★

Вот я как-то удалял такое или даже переименовывал, и не помню как. Архив большой? Может выложишь, потыкаю.

mandala ★★★★★
()

ls -li и удалять по inode'ам

anonymous
()
  1. ls -i
  2. find -inum $номер -delete

Если файлы и их содержимое нужно, воспользуйтесь convmv -f cp1251 -t utf8 *. Возможно, вместо cp1251 потребуется cp866, а если распаковка выполнялась при помощи непатченного unzip, то потребуется два прохода: -f utf8 -t cp850 и -f <какая там была исходная кодировка> -t utf8, потому что тот считает, что кодировка имён файлов всегда cp850.

AITap ★★★★★
()

echo *ё*

rm *ё*

anonymous
()

mc пробуй.

anonymous
()
Ответ на: комментарий от AITap

Спасибо, файлы удалил. А как быть с директориями? Пишет Directory not empty. Открыл man find, там написано что -delete желательно применять с -depth. Но вот как не понял. Пробовал задать ... -delete -depth 1 или -delete -depth=1 (в директориях должны быть файлы, других директорий нет), но не получилось.

Hasek ★★
() автор топика
Ответ на: комментарий от mandala

Да базу данных просто по радарам на авторегистраторе обновлял отсюда.

Hasek ★★
() автор топика
Ответ на: комментарий от Hasek

Можно попробовать либо -exec rm -rvf {} +, либо, если не помогает, выполнить ls -aliR и удалять сначала файлы в поддиректориях, пока они не закончатся.

AITap ★★★★★
()

mc удаляет без проблем

Deleted
()
Ответ на: комментарий от AITap

Большое спасибо! Всё удалил. А можете ещё прокомментировать что в данном случае означают {} и +? Не понимаю эту часть команды.

Hasek ★★
() автор топика
Ответ на: комментарий от Hasek

Вместо {} подставляется путь к файлу, а + означает, что к команде можно подставить все пути к найденным файлам (вместо + можно поставить ';', тогда команда будет запущена по одному разу для каждого найденного пути). См. -exec command ; и -exec command {} + в man find.

AITap ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.