我正在寻求从几个下载的 .pdf 文件中删除所有特殊字符,并且遇到了我正在寻找的解决方案,尽管是在 OS X 环境中:
是否可以在 Linux 环境中实现类似的方法(使用sed
或其他功能)?
答案1
您可以使用以下rename
命令执行此操作。如果您所在的文件夹中包含带有特殊字符的 .pdf 文件:
rename 's/[^a-zA-Z0-9]//g' *.pdf
这将删除以 AZ 结尾的文件中的所有字符(.pdf
无论是大写还是小写)或数字。您可以添加到此列表中:
rename 's/[^a-zA-Z0-9_]//g' *.pdf
此版本允许下划线。
答案2
处理整个文件名以及多个文件:
- 添加
/g
以处理整个文件名。 - 添加
_
下划线替换(如果需要) - 在末尾添加任何其他“类型”的文件或单独的文件名,以空格分隔。
重命名“s/[^a-zA-Z0-9_.]/_/g”*mp4 *avi
答案3
有一个非常方便的工具叫排毒它将为您完成这种转换/重命名。
您可以向其传递一个目录名(最终递归)或特定文件的模式:
detox ./
或者
detox *.pdf
它与大多数 Linux 发行版捆绑在一起。
答案4
对于 * 中的文件;执行 mv "$file" $(echo "$file" | sed -e 's/[^A-Za-z0-9.-]//g'); 完成 &