캐리지로 다시 가져온 파일을 삭제할 수 없습니다.

캐리지로 다시 가져온 파일을 삭제할 수 없습니다.

blahblah\r\n.txt삭제하고 싶은 파일이 있는데 rm blahblah\r\n.txt메시지를 받았을 때 작동하지 않습니다.No such file or directory

그것을 제거하는 방법? ?

답변1

문자열을 묶어서 $''이스케이프 시퀀스를 해석할 수 있습니다(이 예에서는 해석이 가능함 \r).

rm $'file\rwith_carriage_return'
% touch $'file\rwith_carriage_return'
% ls
file?with_carriage_return
% rm $'file\rwith_carriage_return'
% ls
% 

답변2

사용 가능한 여러 방법 중 하나는 inode 번호를 찾아 삭제하는 것입니다.

$ mkdir -p ~/tmp/asdf
$ cd !$
cd ~/tmp/asdf
$ touch `head -c 32 /dev/random` # newlines are boring
$ find . -type f -ls
5636303    0 -rw-r--r--   ...
$ find . -maxdepth 1 -inum 5636303 -exec rm '{}' \;

답변3

파일 이름을 이스케이프하면 파일을 삭제할 수 있습니다. rm 'bla\n.txt'

하지만 그래도 작동하지 않으면 inode 번호로 삭제해 보세요.

ls -i bla*
1234 bla\n.txt
find . -inum 1234
#make sure the right file and only the right file is returned then
find . -inum 1234 -delete

답변4

제거했지만 왜 작동하지 않는지 여전히 rm *.*궁금합니다 .rm blahblah\r\n.txtrm blahblah*.txt

관련 정보