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

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

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

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

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

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

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

6
задан 26 March 2014 в 17:34

3 ответа

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

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

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

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

0
ответ дан 26 March 2014 в 17:34

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

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

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

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

0
ответ дан 26 March 2014 в 17:34

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

 rm b?r.jpg

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

rm b[!e]r.jpg

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

0
ответ дан 26 March 2014 в 17:34

Другие вопросы по тегам:

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