带有特殊字符的Bash副本

带有特殊字符的Bash副本,bash,special-characters,cp,Bash,Special Characters,Cp,我有一个名为Test_file@!@的文件:“1328853976191.txt在tmp目录中 我正在运行以下代码 #!/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”:没有这样的文件或目录 如果目的地是根目录下的

我有一个名为Test_file@!@的文件:“1328853976191.txt在tmp目录中

我正在运行以下代码

#!/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”:没有这样的文件或目录

如果目的地是根目录下的目录,但不在任何2级目录中,则此方法有效


如何解决此问题?

我没有完整的解释,但文件名中的感叹号使我认为关闭历史扩展(使用
set+H
)可能会有所帮助。

您在哪个平台上?这不是来自cp的正常错误消息。但问题可能是目标目录不存在。@我在linux上,目标目录存在