如何从Unix计算机中删除Excel文件



我必须从Unix机器上的目录中删除许多名为"test excel-27-03-2016.xls"的文件。你能建议一下怎么做吗?我尝试使用命令

rm -f test excel-27-03-2016.xls

但它并没有删除该文件。

文件名是否包含空格?似乎是这样。如果是这种情况,rm -f "test excel-27-03-2016.xls"(注意文件名周围的双引号)应该这样做

运行rm -f test excel-27-03-2016.xls意味着尝试擦除两个文件,一个名为test,另一个名excel-27-03-2016.xls

因此,如果'test excel-27-03-2016.xls'是一个文件名,则必须转义rm命令中的空格。

rm test excel-27-03-2016.xls

rm 'test excel-27-03-2016.xls'

否则rm会认为"test"one_answers"excel-27-03-2016.xls"是两个不同的文件。(您也不需要使用-f。)

对于单个文件,如果文件名包含空格,则必须保护这些空格。默认情况下,shell在空格处拆分文件名(通常为参数)。因此,将名称用双引号或单引号括起来:

rm -f "test excel-27-03-2016.xls"

或者如果你喜欢,可以使用反斜杠(但我不喜欢反斜杠;我通常使用引号):

rm -f test excel-27-03-2016.xls

当删除操作不起作用时,-f选项到rm将成为您的敌人;它抑制CCD_ 12否则将给出的错误消息。例如,如果没有-f,您可能会看到:

$ rm test excel-27-03-2016.xls
rm: test: No such file or directory
rm: excel-27-03-2016.xls: No such file or directory
$

这告诉你rm有两个名字,而不是你想要的一个。


来自评论:

我有20-30个文件;我每次都必须给rm 'test excel-27-03-2016.xls"并提供"是"权限才能删除文件吗?

是时候学习外卡了。首先要学习的是小心不要随意销毁文件。

运行命令,例如:

ls -ld *.xls

它列出了你想要删除的文件吗?所有你想要删除,除了想要删除的那些文件什么都没有?如果它不包含任何额外的文件名(也没有目录名),那么您可以运行:

rm -f *.xls

如果它不包含所有需要删除的文件名,但只包含需要删除的名称,则运行rm以减小问题的大小,然后设计一种替代模式来删除其他文件名:

ls -ld *.xlsx   # Semi-plausible

如果它包含太多的名称,则有几个选项。一种是交互式使用rm

rm -i *.xls

对应该删除的回答"是",对应该保留的回答"否"。另一个是计算出一个更精确的通配符,可能是*-27-03-2016.xls

当使用通配符时,shell将文件名保留为单个参数,因此生成的名称中有空格这一事实并不成问题。请注意,许多shell技术,例如捕获变量中的文件名列表,并不能正确地保留空格,这会导致很多混乱。

而且,对于任何批量文件删除,都要非常小心。Unix系统不会阻止你对你的文件造成巨大的破坏。它会相信你的话——如果你说"删除所有内容",它会尝试这样做。


来自另一条评论:

我已获得root访问权限,因此我将拥有所有权限。

当你在做什么时遇到问题时,不要以root身份运行。以root的身份运行意味着,任何错误都有可能比以自己的身份运行更具破坏性。

如果您是以root用户身份运行,那么rm-f选项就不需要了(除非有人试图通过为rm命令创建别名来保护您)。

当您是root时,系统会按照您的指示执行。root:删除内核。system:是的,先生!马上,先生!root:删除完整的根文件系统。system:是的,先生!马上,先生!

以root身份运行时要非常小心。以root身份运行时进行实验是个坏主意。非常重要的是,要确切地知道你作为root用户计划做什么,获得root权限并做你计划做的事情,然后尽快失去root权限。使用sudo(或su)暂时获得root权限。

最新更新