удалить или переименовать файл с \ r в качестве имени файла

10

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

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

Это то, что я получаю с ls -bl:

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

ls -l просто отобразить это "?"

Colin
источник
Как вы вообще получили файл с таким именем?
mkaito

Ответы:

16

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

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

Garrett
источник
Спасибо - это очень полезно - я чувствовал, что должна быть какая-то недвусмысленная системная ссылка на файл, но не смог найти его (все равно быстро).
Колин
1
В зависимости от установленной версии find, вы также можете сделатьfind . -inum 12345 -delete
Уильям Джексон
Для меня, чем более независима версия, тем лучше. Но хорошее предложение тем не менее. :)
Гарретт
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
Джош Ли
источник
Я думаю, у вас также есть кувалда на вашей кухне? На всякий случай вам нужно взломать орех? :-)
mivk
3

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

$ rm <control-v><control-m>
S2VpdGgA
источник
2

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

rm ?

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

Томас Падрон-Маккарти
источник
-1 Это соответствует всем файлам с одним именем символа - см. «Расширение пути» в man bash. Попробуйтеtouch a b c d $'\r'; rm ?
l0b0
1
@ l0b0: да? Как я уже писал, односимвольные имена файлов необычны. Вполне вероятно, что в каталоге нет других таких файлов, и в этом случае это работает. В противном случае "RM-I?" может быть использован.
Томас Падрон-Маккарти