如何删除名为“>”的文件?


22

我正在运行一个Python脚本,该脚本发生故障并用于sudo创建名为的文件>

我如何摆脱这个文件?

当然,当我尝试时sudo rm >,会出现错误bash: syntax error near unexpected token 'newline',因为它认为我正在尝试重定向的输出rm

其权限为-rw-r--r--


10
答案当然是正确的,但总的来说,您可能会考虑这一点:首先是如何创建文件的?(当然,sudo touch >在shell上也会出现同样的错误。)您说这是与Python脚本一起使用的,大概是通过传递">"给某些os函数来创建的。因此sudo python <<< 'import os; os.remove(">")'应该工作正常。
wchargin

4
这让我想起了Windows中的一个错误,即您实际上无法删除具有特定名称的文件(但制作时没有问题。)
PyRulez 2015年

PyRulez哦,哪个?
奥斯丁·伯克

8
具有讽刺意味的是,答案在于您自己写的标题。
拉斐尔2015年

Answers:


54

这些中的任何一个都可以工作:

sudo rm \>
sudo rm '>'
sudo rm ">"
sudo find . -name '>' -delete
sudo find . -name '>' -exec rm {} +

请注意,使用的最后两个命令find将找到当前文件夹及其所有子文件夹中命名的所有文件或目录>。为了避免这种情况,请使用GNU find:

sudo find . -maxdepth 1 -name '>' -delete
sudo find . -maxdepth 1 -name '>' -exec rm {} +

2
可能需要指出的是,find它不是rm递归的,因为它是递归的,并且无论深度如何,都将删除当前目录树下命名的每个文件rm
jw013 2015年

6
@rahul前三个(rm变体)都相同。这只是从外壳保护该文件名的三种不同方式。确实没有理由比另一个更喜欢一个。
德罗伯特

7
你为什么建议find(1)?这里唯一的问题是需要引用外壳元字符。有上百万个不同的程序可以删除文件,但是使用除rm(1)混淆答案之外的任何其他方法。
卡姆(Camh)2015年

2
您不需要GNU查找来避免递归。sudo find . ! -name . -prune -name '>' -exec rm {} +
2015年

2
我同意@camh,find没有添加任何答案。
Paul Draper 2015年

18

您还可以使用Python删除它:

python -c 'import os;os.remove(">")'

使用POSIX find

find . ! -name . -prune -type f -name '>' -exec rm -f {} +

3
何必?Shell提供了许多避免解释>为输出重定向的方法。
亚历克西斯2015年

3
@alexis imo最好了解尽可能多的方式来完成这些简单任务。如果op遇到其他这样的问题,而单纯使用shell很难解决,那么他们将在工具箱中使用另一种工具进行尝试
Undergroundmonorail

1

我最初完成的工作也可以:

sudo sh -c "rm \>"

当然,这是更简单的一个变体sudo rm \>


0

我尝试将此作为评论,但全部都出来了

[Harry@localhost]~% touch ">"
[Harry@localhost]~% cat > ">"
line 1
line 2
[Harry@localhost]~% cat ">"
line 1
line 2
[Harry@localhost]~% ls -l ">"
-rw-r--r-- 1 Harry Harry 14 Jun  5 12:04 >
[Harry@localhost]~% rm ">"
[Harry@localhost]~% ls -l ">"
ls: cannot access >: No such file or directory
[Harry@localhost]~% 

不过,这已经是terdon的答案了……
John WH Smith Smith,

是的,我在肌腱的答案中部分给出了这一点,我同意,我只是认为这个序列很简单并且很明确。如您所见,我试图将其作为注释而不是答案,但是我不知道如何避免全部出现在一行上。它还显示您不需要Python来创建文件,其他注释中也建议了这一点。
哈里·韦斯顿

0

引用该字符,以便外壳程序不将其解释为重定向:

sudo rm '>'

但是,如果您还有其他带有奇怪字符的文件,最安全的方法是打开一个GUI文件资源管理器,例如,nautilus然后将其删除。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.