我正在尝试递归搜索以 .png 结尾的文件名。我的 find 命令对 *.js 有效,但对 *.png 无效。
~ >find dev -name *.png
~ >find dev -name bluerightarrow.png
dev/sandbox/ScheduleEditorTS/ScheduleEditorTS/img/bluerightarrow.png
~ >find dev -name *.js
dev/backup/ScheduleEditorTS/packages/jQuery.2.1.3/Content/Scripts/jquery-2.1.3-vsdoc.js
dev/backup/ScheduleEditorTS/packages/jQuery.2.1.3/Content/Scripts/jquery-2.1.3.js
... etc
答案1
.png
您的当前目录中可能有一个文件,并且该文件*
已被您的 shell 扩展。
以下是实际解释。创建一个名为 的目录test
,然后在其中创建另一个名为 的目录sub
,最后myfile.txt
在 中创建一个名为 的文件sub
。然后cd
进入test
。以下是执行此操作的命令:
~ >mkdir -p test/sub
~ >touch test/sub/myfile.txt
~ >cd test
您可以运行find
并会得到预期的结果:
~/test >find sub -name *.txt
sub/myfile.txt
cause.txt
现在创建一个名为的文件test
并再次运行find
:
~/test >touch cause.txt
~/test >find sub -name *.txt
这次什么也没找到,因为 shell 扩展了*
并且您的find
命令变成:
~/test >find sub -name cause.txt
中没有cause.txt
文件sub
,因此没有结果。
为了避免此问题,您必须使用反斜杠来转义星号:
~/test >find sub -name \*.txt
sub/myfile.txt