我正在运行一个shell脚本,使用带有此代码的sed删除所有元字符。
for file in /path/to/folder/*; do
mv "$file" "$(echo $file | sed "s,[()\^\$\?*+=\|#!@%&-],,g")"
done
它工作得很好,但是当我想要它也寻找正斜杠(“/”)时它会删除所有文件。这就是我用过的东西。 s,[/()\^\$\?*+=\|#!@%&-],,g
为什么?以及我如何定位正斜杠。
感谢。
答案 0 :(得分:1)
更好地使用它(不要试图重新发明方形轮):
detox /path/to/dir/*
请参阅http://detox.sourceforge.net/
描述:用于通过用标准等价物替换字符来清理文件名的实用程序
答案 1 :(得分:1)
不,它没有删除任何文件,但它们可能已成为隐藏,因为它们现在都以点.
开头。运行ls -al
以查看这些文件。
通过在sed命令中加入正斜杠/
,您的文件将重命名为:.filename
,因为第一个/
已被sed剥离。