我有一个文件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
在几种可用的方法中,一种是找到索引节点号,然后删除它。
$ 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.txt
并且rm blahblah*.txt
不起作用。