理解bash-find
我试图学习bash的基础知识。我正在尝试理解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 :
*/.
如何显示文件夹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
没有。