Mas*_*tan 4 shell find filenames wildcards
搜索文件find *和find ~搜索文件有什么区别 ?当我当前的工作目录打开root时在终端中,然后在终端中
root@devils-ey3:~# find * -print -quit
~
Run Code Online (Sandbox Code Playgroud)
在同一个目录
root@devils-ey3:~# find ~ -print -quit
/root
Run Code Online (Sandbox Code Playgroud)
但是如果我改变了,pwd那么输出find ~ -print -quit和以前一样,但另一个是改变。什么是工作的目的*,并~为查找文件?
的基本格式find是
find WHERE WHAT
Run Code Online (Sandbox Code Playgroud)
因此,在 中find *,*被视为WHERE。现在,*是一个通配符。它匹配当前目录中的所有内容(默认情况下,以 a 开头的文件/目录除外.)。Windows 等效项是*.*. 这意味着,*在扩展它被传递给之前的所有文件和目录在当前目录find。为了说明,考虑这个目录:
$ ls
file file2
Run Code Online (Sandbox Code Playgroud)
如果我们运行set -x以启用调试信息,然后运行您的find命令,我们会看到:
$ find * -print -quit
+ find file file2 -print -quit
file
Run Code Online (Sandbox Code Playgroud)
正如你在上面看到的,*扩展到目录中的所有文件,实际运行的是
find file file2 -print -quit
Run Code Online (Sandbox Code Playgroud)
由于-quit,这将打印您告诉它查找并退出的文件的第一个文件名。在您的情况下,您似乎有一个文件或目录被调用,~以便打印出来。
~但是,波浪号 ( ) 也有特殊含义。它是您$HOME目录的快捷方式:
$ echo ~
/home/terdon
Run Code Online (Sandbox Code Playgroud)
因此,当您find ~以 root 身份运行时,将~扩展为/home/root您运行的命令实际上是:
# find ~ -print -quit
+ find /root -print -quit
/root
Run Code Online (Sandbox Code Playgroud)
同样,您要find在特定位置搜索文件或目录并在打印第一个后退出。由于第一个匹配的文件或目录/root本身,这就是打印的内容。
| 归档时间: |
|
| 查看次数: |
896 次 |
| 最近记录: |