关于find命令的depth参数的一个奇怪的问题

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
chysxmy
帖子: 8
注册时间: 2007-10-28 0:22

关于find命令的depth参数的一个奇怪的问题

#1

帖子 chysxmy » 2008-04-11 22:52

在看linux的书,提到了一个find命令的例子 我照着书上敲了一遍命令:sudo find / -name "passwd" -depth
-depth参数在 -name参数后面,结果出现了警告信息.。
然后我又尝试了一次 把epth参数放到了前面 把 -name参数放到了后面 结果反而没有警告了。
可是根据警告的内容来看,似乎警告和我的实际参数位置是反了的。请问是为什么?
我的ubuntu版本是7.04 我是在虚拟机上装的ubuntu

chysxmy@chysxmy-desktop:~$ sudo find / -name "passwd" -depth
Password:
find: 警告: 你在非选项参数-depth后指定了-name选项,但是选项与位置无关(-depth给出的参数将影响它前面和后面的测试)。请在其他参数之前给出选项。

/usr/bin/passwd
/usr/share/doc/passwd
/usr/share/lintian/overrides/passwd
/usr/share/linda/overrides/passwd
/etc/passwd
/etc/pam.d/passwd
重新尝试了一次,这次depth参数放到了前面 把 -name参数放到了后面,结果反而不出错误了。下面是命令和执行的结果。
chysxmy@chysxmy-desktop:~$ sudo find / -depth -name passwd
/usr/bin/passwd
/usr/share/doc/passwd
/usr/share/lintian/overrides/passwd
/usr/share/linda/overrides/passwd
/etc/passwd
/etc/pam.d/passwd
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#2

帖子 eexpress » 2008-04-11 22:55

找指定名字目标前,先指定好路径(包括下面的路径)。
而且,你这样用这参数无意义。除开你指定-maxdepth这些。
● 鸣学
chysxmy
帖子: 8
注册时间: 2007-10-28 0:22

#3

帖子 chysxmy » 2008-04-11 23:06

eexpress 你好
我的路径就是根目录 / 然后name指定搜索包含字符‘passwd’的文件名 然后指定参数 -depth
chysxmy
帖子: 8
注册时间: 2007-10-28 0:22

#4

帖子 chysxmy » 2008-04-12 12:09

我现在怀疑是虚拟机的问题 有没有人是不再虚拟机上装ubuntu 而是直接装的 最好也是7.04版本 不是也无所谓了
尝试一下下面两条命令 麻烦把结果贴上来我看一下 多谢了
第一条命令:
sudo find / -name passwd -depth
第二条命令:
sudo find / -depth -name passwd
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#5

帖子 BigSnake.NET » 2008-04-12 12:30

其实只是一个警告, 是提醒你无论 -depth 放在 -name 的前面还是后面, 都是先看 -depth, 再看 -name, 因为-depth 是非选项参数. 根本不是什么错误.
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#6

帖子 BigSnake.NET » 2008-04-12 12:33

$ LC_ALL=C LANG=C find / -name passwd -depth
find: warning: you have specified the -depth option after a non-option argument -name, but options are not positional (-depth affects tests specified before it as well as those specified after it). Please specify options before other arguments.


至于那个前前后后的问题... 明显是翻译错误..
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
chysxmy
帖子: 8
注册时间: 2007-10-28 0:22

#7

帖子 chysxmy » 2008-04-12 12:58

多谢 BigSnake.NET
看来我还是把版本切换回英文吧 这些翻译太不靠谱了
警告的意思应该是说 建议把depth选项放到其他参数之前 是吧
回复