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

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

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

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

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

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

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

1
задан 26 March 2014 в 19:34

2 ответа

Вы можете использовать групповые символы bash с

 rm b?r.jpg

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

rm b[!e]r.jpg

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

2
ответ дан 25 May 2018 в 03:00

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

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

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

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

0
ответ дан 25 May 2018 в 03:00
  • 1
    Трубопровод ls - grep может быть неинтуитивным. Вероятно, проще просто использовать что-то вроде find . -name 'junk*deleteme' -delete – Sparhawk 28 May 2014 в 10:14

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

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