Linux批量删除文件名中的特殊字符

nit*_*trl 5 linux special-characters batch-rename

我试图从几个下载的 .pdf 文件中删除所有特殊字符,并且遇到了我正在寻找的解决方案,尽管是在 OS X 环境中:

在 MacOS X 中保存时自动从文件名中删除特殊字符的功能

是否sed可以在 Linux 环境中实现类似的方法(使用或某些其他功能)?

Pau*_*aul 11

您可以使用rename命令执行此操作。如果您位于包含带有特殊字符的 .pdf 文件的文件夹中:

rename 's/[^a-zA-Z0-9]//g' *.pdf
Run Code Online (Sandbox Code Playgroud)

这将从.pdf在任何情况下都不是 AZ 或数字的文件中删除任何字符。您可以添加到此列表中:

rename 's/[^a-zA-Z0-9_]//g' *.pdf
Run Code Online (Sandbox Code Playgroud)

此版本允许使用下划线。


小智 5

要处理整个文件名以及多个文件:

  • 添加/g以处理整个文件名。
  • 添加_以替换为下划线(如果需要)
  • 在末尾添加任何其他“类型”的文件或单个文件名,并以空格分隔。

重命名 's/[^a-zA-Z0-9_.]/_/g' *mp4 *avi