Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
理解bash-find_Bash - Fatal编程技术网

理解bash-find

理解bash-find,bash,Bash,我试图学习bash的基础知识。我正在尝试*/.如何显示文件夹notes bash中所有子目录中的所有不可见文件: ~/anir/repos/notes-bash$ find */.* images/. images/./bashrepl.png images/.. images/../.git images/../.git/COMMIT_EDITMSG : del/. del/.. del/../.git del/../.git/COMMIT_EDITMSG del/../.git/HEAD :

我试图学习bash的基础知识。我正在尝试
*/.
如何显示文件夹
notes bash
中所有子目录中的所有不可见文件:

~/anir/repos/notes-bash$ find */.*
images/.
images/./bashrepl.png
images/..
images/../.git
images/../.git/COMMIT_EDITMSG
:
del/.
del/..
del/../.git
del/../.git/COMMIT_EDITMSG
del/../.git/HEAD
:
我不明白为什么它将文件列为
images/。
。这不是意味着与notes bash相同的文件夹吗?我猜它只是想在所有可能的目录中找到
/。
。因此,它在所有子目录中递归(这里是
images
del
),以强制形成以
/.
作为子字符串的路径

Q1.我说的对吗

因此,我接下来创建了子目录
del/del1
,并运行以下命令来检查通过
del1
形成的所有路径:

$ find */.* | grep del1
del/./del1
del/../del/del1
images/../del/del1
Q2.所以,现在我猜为什么它没有通过
del1
再次出现,这就是为什么它没有列出路径,例如
del/del1/../../...git

我在试着怎么做。显示文件夹
notes bash

这将列出当前目录和所有子目录中以
开头的所有文件:

~/anir/repos/notes-bash$ find -name '.*'
我不明白为什么它将文件列为
images/。

这是因为
find
中的第一个
*
notesbash
中名为
images
的目录相匹配

我接下来创建了子目录
del\del1

不,你没有。您创建了名为
del
的子目录,可能还创建了名为
del1
的子目录
del/del1
将是对它的适当引用

你对为什么没有在任何地方出现del1的猜测有点不准确。照办

echo */.*

看看它显示了什么。这些是
find
命令将使用的文件和目录。

bash
没有
find
命令;这是一个外部程序。我尝试了
echo*/.
并打印了
images/。图像/。。提单。del/。
但不包含
del/de1/
del/de1/。
。现在的问题是为什么会这样?是不是
find
仅在当前目录的子目录而不是子目录的帮助下尝试形成路径?换句话说,为什么
*/.*
中的第一个
*
不能解析为
del/del1
?我刚刚遇到一条规则,即“
*
不扩展为包含
/
”这是这种行为背后的原因吗?echo打印的是
查找的文件和目录。您可以手动检查它们来验证它<代码>*/.
del/del1
不匹配。你凭什么认为会这样?你有一个好主意。在您的glob中,
del/del1
没有。