usuń plik lub zmień jego nazwę, używając \ r jako nazwy pliku

10

Mam nieznośny mały plik, którego nazwa wydaje się być pojedynczym znakiem, a ta postać to \r

Jak mogę to usunąć?

Oto, co otrzymuję ls -bl:

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

ls -l po prostu wyświetl to „?”

Colin
źródło
Jak doszło do tego, że plik o takiej nazwie?
mkaito,

Odpowiedzi:

16

Z nami ls -li, aby uzyskać numer i-węzła dla pliku (pierwsza kolumna), a następnie użyć findgo usunąć (zakładając-węzeł jest 12345):

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

Garrett
źródło
Dziękuję - jest to niezwykle pomocne - czułem, że musi istnieć jakieś jednoznaczne odniesienie systemowe do pliku, ale nie mogłem go znaleźć (w każdym razie szybko).
Colin,
1
W zależności od findzainstalowanej wersji można również zrobićfind . -inum 12345 -delete
William Jackson
Dla mnie, im bardziej zależna jest od wersji, tym lepiej. Niemniej jednak dobra sugestia. :)
Garrett,
5

Osobiście sięgnąłbym po Python:

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

Ale możesz to również zrobić z powłoki, jeśli rozumiesz znaki ucieczki.

$ ls -b $'\r'
\r
$ rm -vi $'\r'
rm: remove regular empty file \r’? y
removed \r
Josh Lee
źródło
Chyba masz także młot w kuchni? Na wypadek, gdybyś musiał zgnieść orzecha? :-)
mivk
3

Innym szybkim sposobem na usunięcie pliku o nazwie, <carriage return>jeśli używasz powłoki Bash, jest:

$ rm <control-v><control-m>
S2VpdGgA
źródło
2

Nazwy plików jednoznakowych są niezwykłe, a jeśli nie masz żadnych innych takich plików w katalogu, możesz spróbować:

rm ?

Jestem zbyt leniwy, by uczyć się lub sprawdzać, jak cytować dziwne postacie, więc wielokrotnie korzystałem z tego wariantu, gdy utknąłem w plikach o trudnych nazwach.

Thomas Padron-McCarthy
źródło
-1 To pasuje do wszystkich plików o nazwie pojedynczego znaku - patrz „Rozszerzenie nazwy ścieżki” w man bash. Spróbujtouch a b c d $'\r'; rm ?
l0b0
1
@ l0b0: Tak? Jak napisałem, jednoznakowe nazwy plików są niezwykłe. Jest całkiem prawdopodobne, że w katalogu nie ma innych takich plików, w takim przypadku to działa. W przeciwnym razie „rm -i?” może być użyty.
Thomas Padron-McCarthy