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