0

搜索位于 2 个不同主目录中的 .txt 文件时,根据当前工作目录,仅显示一个。为什么是这样?

/home/bob/1.txt 
/home/alice/dir1/2.txt

pwd /tmp
[root@host tmp]#find /home -name *.txt 
/home/bob/1.txt 
/home/alice/dir1/2.txt

pwd /home
[root@host bob]#find /home -name *.txt 
/home/bob/1.txt

为什么从 bob 目录中搜索只返回一个文件?

4

1 回答 1

2

为什么从 bob 目录中搜索只返回一个文件?

因为当工作目录是时/home/bob,命令*.txt中的 即,。这将在 中找到文件,但不会在 中找到名称不同的文件。它查找是否存在这样的文件。find1.txtfindfind /home -name 1.txt/home/bob/home/alice/home/alice/1.txt

另一方面,当模式不匹配任何文件(相对于工作目录)时,它作为文字传递。至少在默认情况下——你应该小心这一点,因为如果nullglobshell 选项有效并且find命令是从模式不匹配任何文件的位置执行的,那么模式将被扩展为空。

如果要确保不将 shell 路径名扩展应用于模式,请引用它:

find /home -name '*.txt'

或者

find /home -name \*.txt

或者 ....

于 2021-10-28T15:36:23.963 回答