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