使用Sudo和通配符移动其他用户拥有的文件

时间:2015-11-07 17:20:36

标签: bash

我有一个名为cam的用户。 Cam存储了一堆文件。现在我想移动这些文件,所以我尝试了以下内容......

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

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

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

但是如果我像詹姆斯那样扼杀命令

{{1}}

工作正常。 WTF我错过了

1 个答案:

答案 0 :(得分:2)

  

如果我执行了sudo ls /home/cam我看到了所有内容,但没有sudo我没有权限查看任何内容。

执行此命令时:

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

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

  

sudo是否应该拥有权限?

没有。使用sudomv命令将以root身份执行,但参数列表扩展在执行传递给sudo mv之前发生。

要使用root权限进行*扩展(以便目录的内容可见),您可以将命令包装在自己的shell中,如下所示:

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