linux - terminal教程 - macos terminal




Linux-查找名称包含字符串的文件 (4)

-maxdepth选项应位于-name选项之前,如下所示。

find . -maxdepth 1 -name "string" -print

我一直在寻找一个将从当前目录返回文件名中包含一个字符串的文件的命令。 我已经看到了locatefind命令,可以找到以first_word*开头或以*.jpg结尾的文件。

如何返回文件名中包含字符串的文件列表?

例如,如果2012-06-04-touch-multiple-files-in-linux.markdown是当前目录中的文件。

我怎么能返回这个文件和其他包含字符串touch ? 使用诸如find '/touch/'类的命令


使用find

find . -maxdepth 1 -name "*string*" -print

它会查找当前目录下的所有文件(如果你想递归的话,删除maxdepth 1 )包含“string”并将它打印在屏幕上。

如果你想避免包含':'的文件,你可以输入:

find . -maxdepth 1 -name "*string*" ! -name "*:*" -print

如果你想使用grep (但我认为没有必要,只要你不想检查文件内容),你可以使用:

ls | grep touch

但是,我再说一遍, find更适合您的任务。


如果字符串位于名称的开头,则可以执行此操作

$ compgen -f .bash
.bashrc
.bash_profile
.bash_prompt

find $HOME -name "hello.c" -print

这将在整个$HOME (即/home/username/ )系统中搜索名为“hello.c”的任何文件并显示其路径名:

/Users/user/Downloads/hello.c
/Users/user/hello.c

但是,它不会匹配HELLO.CHellO.C 。 匹配不区分大小写,传递-iname选项如下:

find $HOME -iname "hello.c" -print

示例输出:

/Users/user/Downloads/hello.c
/Users/user/Downloads/Y/Hello.C
/Users/user/Downloads/Z/HELLO.c
/Users/user/hello.c

传递-type f选项以仅搜索文件:

find /dir/to/search -type f -iname "fooBar.conf.sample" -print
find $HOME -type f -iname "fooBar.conf.sample" -print

-iname可用于GNU或BSD(包括OS X)版本查找命令。 如果您的find命令版本不支持-iname ,请使用grep命令尝试以下语法:

find $HOME | grep -i "hello.c"
find $HOME -name "*" -print | grep -i "hello.c"

或尝试

find $HOME -name '[hH][eE][lL][lL][oO].[cC]' -print

示例输出:

/Users/user/Downloads/Z/HELLO.C
/Users/user/Downloads/Z/HEllO.c
/Users/user/Downloads/hello.c
/Users/user/hello.c




locate