带有特殊字符的Bash副本

时间:2012-02-14 17:01:19

标签: bash special-characters cp

我有一个名为Test_File @的文件!@#〜:“tmp目录中的_ 1328853976191.txt

我正在运行以下代码

#!/bin/sh


for f in /tmp/*.azw2; do
   if [ -f "$f" ]; then
      cp "$f" /some/directory
   fi

done

抛出错误

cp:无法删除'/some/directory/Test_File@!@# ~:"_1328853976191.txt':没有此类文件或目录

如果destination是/或root下的目录,但不在任何2级深度目录中,则此方法有效。

如何解决此问题?

1 个答案:

答案 0 :(得分:2)

我没有完整的解释,但文件名中的惊叹号让我觉得关闭历史记录扩展(使用set +H)可能有所帮助。