Answers:
直接等效为
find . -iname <filename>
它将<filename>
忽略大小写列出当前目录和所有子目录中调用的所有文件和目录。
如果您的find版本不支持-iname
,则可以使用-name
。请注意,不同于-iname
,-name
区分大小写。
如果您只想列出名为的文件<filename>
,而不是目录,请添加-type f
find . -iname <filename> -type f
如果要使用通配符,则需要在其周围加上引号,例如
find . -iname "*.txt" -type f
否则外壳会扩展它。
正如其他人指出的,您还可以执行以下操作:
find . | grep "\.txt$"
grep
将根据正则表达式打印行,这些正则表达式比通配符更强大,但是语法不同。
请参阅man find
和man grep
了解更多详细信息。
<filename>
作为标志物userinput是在命令行环境中的坏习惯,其中< and >
大部分时间都有特定的含义。我建议只使用filename
FILENAME来强调它。大多数人都会理解,而那些不会的人可能会在不了解自己不应该撞击小于或大于撞击时造成伤害。
<filename>
是许多UNIX文档中的约定,因此我认为对于人们来说这很有用,但是我同意FILENAME
可能更容易理解。
find -iname <filename>
会更好,因为它与DOS一样不区分大小写
一些shell允许使用ls **/filename
,这非常方便。
shopt -s globstar; echo **/filename
等效于find . -name "filename"
。它也可以在zsh中使用。
shopt -s globstar
,则可能对您有用。递归globing是仅在某些Shell中可用的功能,有时默认情况下不启用。
shopt
命令启用了该选项globstar on
。现在,它就像一种魅力。非常感谢。
你可以用
find . | egrep filename
find . -regextype posix-egrep -regex '.*filename.*'
(我不知道该egrep
部分是否重要,但是您egrep
在回答中使用了该部分,因此我将其包括在内)
grep
使用正则表达式,而DOS命令使用外壳通配符。
find . -name "*.*"
不会在DOS背景下做您期望的事情。尽管正则表达式是一种全新的野兽,但globs足够接近以至于可以被识别。
*.*.*
在现代dos中,即Windows cmd,该怎么做?那*.*.*.*
呢
也可以是:tree -if </your/path>
或'pwd'
作为路径
<filename>
包含通配符,请使用引号引起来,例如find . -name '*.txt'
。