Не удается удалить файлы, содержащие специальные символы в имени файла

Я использую Ubuntu 9.10 (Karmic) и у меня есть каталог с множеством файлов, среди которых есть два файла:

./baer.jpg
./bär.jpg

Я хотел бы удалить bär.jpg, но не могу. [118 ]

Если я наберу rm b и нажму TAB, он покажет мне оба файла, если я добавлю ä и нажму TAB, ничего не отобразится.

Что нужно сделать, чтобы удалить bär.jpg?

Удаление родительской папки не является для меня решением, так как в этом каталоге есть много файлов, которые используются производительной средой.

6
задан 17.05.2020, 18:46

3 ответа

Я только что узнал, как удалять такие файлы с помощью специальных символов:

  1. cd <directory with that file>
  2. ls -ali
  3. Слева от каталога. перечисляя вы видите идентификатор inode каждого файла.
  4. Удалите файл с помощью идентификатора inode:

    find . -inum <inode ID of your file> -exec rm -i {} \;

Это отлично сработало для моей проблемы. Надеюсь, это поможет!

10
ответ дан 17.05.2020, 18:48

Ну, вы можете попробовать использовать сопоставление через grep, чтобы удалить файл, если это один проблемный файл.

neal@dsadsa:~$ touch junk_ä_deleteme
neal@dsadsa:~$ ls | grep junk | grep deleteme | xargs rm

Здесь я создаю файл с именем junk_ä_deleteme. Я удаляю его позже, сопоставляя символы до ("мусор") и после ("deleteme") забавного символа. Этот подход не очень хорош, но если это один файл, он может работать.

Возможно, лучшим решением было бы сформировать регулярное выражение, соответствующее вашему файлу, и затем передать это имя файла по rm.

0
ответ дан 17.05.2020, 18:47

Вы можете использовать подстановочные знаки bash с

 rm b?r.jpg

, где ? обозначает ровно один символ. Альтернатива (если оба имени файла имеют одинаковую длину) будет

rm b[!e]r.jpg

, где [!e] означает любой символ, кроме «е».

2
ответ дан 17.05.2020, 18:49

Теги

Похожие вопросы