无法在 Linux 上删除文件名中的逗号

无法在 Linux 上删除文件名中的逗号

我在终端文件夹中有名为“data”的文件夹。 data 中的某些文件名中包含“,”。我可以通过以下方式列出它们

$ cd data
$ ls -i |grep -E '\,'

但我不知道如何从这些文件名中删除“,”。根据我的研究,我尝试了类似的方法grep -E '\,' | sed ',',但没有成功。如果我无法从文件文件名中删除逗号,我愿意删除这些文件,但我无法在终端文件夹上或使用 rm 的命令行删除它们(它说没有这样的文件或目录)。

答案1

使用 bash shell,您可以循环遍历所有包含逗号的文件名,并重命名它们以删除所有逗号:

for f in *,*; do mv -- "$f" "${f//,/}"; done

通过示例运行:

$ touch foo,bar a,b,c,d
$ ls
a,b,c,d  foo,bar

结果是:

$ for f in *,*; do mv -- "$f" "${f//,/}"; done
$ ls
abcd  foobar

这将破坏任何已存在的目标文件名。

相关内容