11

У меня есть маленький надоедливый файл, имя которого кажется одним символом, и этот символ является \r

Как я могу удалить это?

Вот что я получаю с помощью ls -bl:

-rw-rwxr--+   1 root             snapplewriters        0 Aug 29  2011 \r

ls -l просто покажу это?"

5 ответов5

17

ls -li чтобы получить номер инода для файла (первый столбец), затем используйте find для его удаления (при условии, что inode равен 12345):

find . -inum 12345 -exec rm -i {} \;

15

используйте ANSI-C цитирование: rm $'\r'

http://www.gnu.org/software/bash/manual/bashref.html#ANSI_002dC-Quoting

5

Я лично достиг бы Python:

>>> import os
>>> '\r' in os.listdir('.')
True
>>> os.unlink('\r')

Но вы также можете сделать это из оболочки, если вы понимаете escape-символы.

$ ls -b $'\r'
\r
$ rm -vi $'\r'
rm: remove regular empty file ‘\r’? y
removed ‘\r’
3

Еще один быстрый способ удалить файл с именем <carriage return> если вы используете оболочку Bash:

$ rm <control-v><control-m>
2

Односимвольные имена файлов являются необычными, и если у вас нет других таких файлов в вашем каталоге, вы можете попробовать это:

rm ?

Мне лень учиться или искать, как процитировать странные символы, поэтому я использовал варианты этого несколько раз, когда застрял в файлах со сложными именами.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .