2015-11-07 39 views
1

我有一个名为cam的用户。 Cam存储一堆文件。现在我想,所以我尝试以下移动这些文件...使用Sudo和通配符移动拥有不同用户的文件

sudo mv /home/cam/DCS-*.jpg /home/cam/cam/ 

但是当我运行这个命令我得到...

mv: cannot stat ‘/home/cam/DCS-*.jpg’: No such file or directory 

但如果我欠幅脉冲状命令

sudo mv /home/cam/DCS-934L2015110711425501.jpg /home/cam/cam/ 

它工作正常。 WTF我错过

+0

请问您的用户有权限在'/ home/cam'中查看文件?例如这是否工作? 'ls/home/cam/DCS - *。jpg'? (我怀疑一个许可被拒绝)。这会工作吗? 'sudo sh -c'mv /home/cam/DCS-*.jpg/home/cam/cam /'' – janos

+0

不应该sudo有权限吗?它由不同的用户拥有,但我可以复制单个文件。如果我做了sudo ls(sudo ls/home/cam),我可以看到所有东西,但没有sudo,我没有权限查看任何东西。 – Jackie

回答

2

,如果我做一个sudo ls /home/cam我看到的一切,但没有sudo我没有权限看到什么。

当执行该命令:

sudo mv /home/cam/DCS-*.jpg /home/cam/cam/ 

*由shell根据当前用户的权限扩大。由于当前用户无法看到这些文件(ls /home/cam没有权限),因此shell无法展开参数列表。

不应该sudo有权限吗?

号随着sudo,所述mv命令将作为根被执行,但在此之前执行传递给sudo mv参数列表膨胀发生。

要与root权限的*膨胀发生(这样的目录的内容将是可见的),你可以在自己的壳包裹的命令是这样的:

sudo sh -c 'mv /home/cam/DCS-*.jpg /home/cam/cam/' 
+0

很好的解释谢谢! – Jackie

相关问题