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 „?”


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 {} \;


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

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>

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.


-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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.