删除名称中带有空格的文件

删除名称中带有空格的文件

我正在尝试删除名称中带有空格的所有文件。我正在使用以下命令。但这给了我一个错误

命令 :ls | egrep '. ' | xargs rm

在这里,如果我仅使用ls | egrep '. '命令,它会为我提供文件名中带有空格的所有文件名。但是当我尝试将输出传递给 rm 时,所有空格(前导或尾随)都被删除。所以我的命令没有得到正确执行。

有关如何删除名称中至少有一个空格的文件的任何指示吗?

答案1

您可以在rm命令上使用标准通配符:

rm -- *\ *

这将删除名称包含空格的任何文件;空格被转义,因此 shell 不会将其解释为分隔符。添加--将避免以破折号开头的文件名出现问题(它们不会被解释为参数rm)。

如果您想在删除每个文件之前对其进行确认,请添加以下-i选项:

rm -i -- *\ *

答案2

我会避免解析ls输出

为什么不 :

find . -type f -name '* *' -delete

没问题rm:-)。

尽管这是递归的,并且会删除当前目录和嵌套目录中带有空格的所有文件,如注释中所述。

答案3

看看这个假设名称“奇怪的文件”

解决方案一

rm strange\ file

解决方案二

rm "strange file"

解决方案三

ls -i "strange file"

然后你会看到索引节点

find . -inum "numberoofinode" -exec rm {} \;

如果文件名非常奇怪,例如

!-filename or --filename

使用

rm ./'!-filename'

答案4

您可以使用:

find . -name '* *' -delete

相关内容