正斜杠转义删除文件

时间:2013-08-07 18:40:46

标签: shell sed terminal

我正在运行一个shell脚本,使用带有此代码的sed删除所有元字符。

for file in /path/to/folder/*; do
   mv "$file" "$(echo $file | sed "s,[()\^\$\?*+=\|#!@%&-],,g")"
done

它工作得很好,但是当我想要它也寻找正斜杠(“/”)时它会删除所有文件。这就是我用过的东西。 s,[/()\^\$\?*+=\|#!@%&-],,g

为什么?以及我如何定位正斜杠。

感谢。

2 个答案:

答案 0 :(得分:1)

更好地使用它(不要试图重新发明方形轮):

detox /path/to/dir/*

请参阅http://detox.sourceforge.net/

  

描述:用于通过用标准等价物替换字符来清理文件名的实用程序

答案 1 :(得分:1)

不,它没有删除任何文件,但它们可能已成为隐藏,因为它们现在都以点.开头。运行ls -al以查看这些文件。

通过在sed命令中加入正斜杠/,您的文件将重命名为:.filename,因为第一个/已被sed剥离。