如何从Unix机器上删除Excel文件?

时间:2016-03-27 16:07:14

标签: unix

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

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

但它没有删除文件。

3 个答案:

答案 0 :(得分:1)

所以如果' test excel-27-03-2016.xls'是一个文件名,您必须在rm命令中转义空格。

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

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

否则rm会认为'测试'和' excel-27-03-2016.xls'是两个不同的文件。 (你也不应该使用-f。)

答案 1 :(得分:1)

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

正在运行rm -f test excel-27-03-2016.xls意味着要删除两个文件,一个名为test,另一个名为excel-27-03-2016.xls

答案 2 :(得分:0)

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

rm -f "test excel-27-03-2016.xls"
如果你愿意,可以使用反斜杠(但我不喜欢反斜杠;我通常使用引号):

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

当删除操作无效时,-f的{​​{1}}选项成为您的敌人;它会抑制rm否则会给出的错误消息。例如,如果没有rm,您可能会看到:

-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 $ 有两个名字,而不是你想要的名字。

来自评论:

  

我有20-30个文件;每次都必须提供rm并提供"是"删除文件的权限?

学习外卡的时间。首先要学习的内容 - 小心! 不要随意破坏文件。

运行如下命令:

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

是否列出了您要删除的文件 - 您要删除的所有文件除了要删除的文件之外什么都没有?如果它不包含任何额外的文件名(并且没有目录名),那么您可以运行:

ls -ld *.xls

如果它不包含您需要删除的所有文件名,但它只包含您需要删除的名称,则运行rm -f *.xls 以减小问题的大小,然后设计替代方案模式删除其他:

rm

如果它包含太多名称,您有几个选项。一种是以交互方式使用ls -ld *.xlsx # Semi-plausible

rm

并对应删除的内容回答“是”,对应保留的内容回答“否”。另一种方法是制定一个更精确的通配符,可能是rm -i *.xls

当使用通配符时,shell将文件名保存为单个参数,因此生成的名称中包含空格的事实不是问题。请注意,许多shell技术(例如捕获变量中的文件名列表)不会正确保留空间 - 这会引起很多混乱。

并且,删除任何大量文件后,要非常小心。 Unix系统不会阻止你对你的文件造成巨大的破坏它会让你听从你的话 - 如果你说'删除所有内容',它会尝试这样做。

来自另一条评论:

  

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

当你在解决你正在做的事情时遇到问题时,不要以root身份运行。以*-27-03-2016.xls运行意味着任何错误都可能比你自己运行时更具破坏性。

如果您以root身份运行,则root -f的{​​{1}}选项确实不需要(除非有人试图通过为rm命令创建别名来保护您)。

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

以root身份运行时非常非常小心。以root身份运行时进行实验是一个坏主意。准确了解您打算以root身份执行的操作,获取root权限并执行您计划执行的操作,然后尽快失去root权限非常重要。使用system(或sudo)暂时获得root权限。