带有特殊字符的 Bash 副本
我在 tmp 目录中有一个名为 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 级深度的目录中,则此方法有效。
我该如何解决这个问题?
I have a file named Test_File@!@#~:"_1328853976191.txt in tmp directory
I am running the following code
#!/bin/sh
for f in /tmp/*.azw2; do
if [ -f "$f" ]; then
cp "$f" /some/directory
fi
done
It throws error
cp: cannot remove '/some/directory/Test_File@!@#~:"_1328853976191.txt': No such file or directory
This works if destination is either / or a directory under root, but not in any directory 2 level deep.
How can I fix this issue?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我没有完整的解释,但文件名中的感叹号让我认为关闭历史扩展(使用
set +H
)可能会有所帮助。I don't have a complete explanation, but the exclamation point in the file name makes me think that turning history expansion off (using
set +H
) might help.