繁体   English   中英

'MV'命令抛出错误,但在Docker中执行正常

[英]'mv' command throwing error but executing fine in docker

当我执行以下命令时(它将所有带有.txt.sbreaks扩展名的文件移动到另一个文件夹):

sudo docker exec name mv xyz/data/outputs/*.{sbreaks,txt} <>/data/spare

我收到以下错误:

mv: cannot stat ‘xyz/data/outputs/*.sbreaks’: No such file or directory
mv: cannot stat ‘xyz/data/outputs/*.txt’: No such file or directory

但是,当我通过sudo docker exec -it name bash进入docker并执行相同的命令: mv xyz/data/outputs/*.{sbreaks,txt} xyz/data/spare ,它执行得很好。

我在这里做错了什么?

PS:本地和Docker容器都是ubuntu环境

这是因为*是由Shell程序(即bash)扩展的。 (请问,这是典型的面试问题)。

因此,将您的命令传递到shell并让它为您启动mv

sudo docker exec cypher bash -c 'mv xyz/data/outputs/*.{sbreaks,txt} .......'

当您docker exec some_program some_paramdocker exec some_program some_param搜索some_program并直接执行它,而无需执行任何其他操作,只需将some_param作为参数传递(在您的情况下为星号)。 mv需要真实的文件名,而不是*

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM