Linux/Unix:查找命令忽略区分大小写的搜索

时间:2020-01-09 14:16:26  来源:igfitidea点击:

如何在Linux或类Unix系统上搜索文件并忽略大小写? find命令递归地为提供的每个路径递归目录树,并评估表达式。
它主要用于在Linux和类似Unix的系统上搜索文件和目录。
根据给定条件搜索文件的语法如下。
您可以按名称,所有者,组,类型,权限,日期和其他条件搜索文件:

find dir-to-look criteria what-to-do

或者

find [options] dir-to-look criteria what-to-do

在此示例中,在$HOME中搜索名为hello.c的文件:

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

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

/Users/Hyman/Downloads/hello.c
/Users/Hyman/hello.c

但是,它将与HELLO.C或HellO.C不匹配。
要匹配不区分大小写,请按如下所示通过-iname选项:

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

输出示例:

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

最后,传递-type f选项只搜索文件:

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

关于AIX/HP-UX和其他类似Unix的旧系统的说明

-iname可在GNU或BSD(包括OS X)版本的find命令上工作。
如果您的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/Hyman/Downloads/Z/HELLO.C
/Users/Hyman/Downloads/Z/HEllO.c
/Users/Hyman/Downloads/hello.c
/Users/Hyman/hello.c