我想使用 find 命令在 2 个不同目录中搜索文件,
find $file_dir1 $file_dir2 -name 'searchpattern*' | tail -10
Run Code Online (Sandbox Code Playgroud)
我现在正在使用这个命令,但它是区分大小写的搜索。我试过了-iname,我的 linux 机器不支持它。我需要列出所有忽略大小写的文件。
find "$file_dir1" "$file_dir2" \
-name '[sS][eE][aA][rR][cC][hH][pP][aA][tT][tT][eE][rR][nN]*'
Run Code Online (Sandbox Code Playgroud)
也就是说,我们用匹配或x的[xX]括号表达式替换字母,有效地将区分大小写的小写匹配替换为不区分大小写的匹配。xXxx
对于某些字符,例如?大写或小写翻译不是单个字符,您可能需要求助于以下内容:
find "$file_dir1" "$file_dir2" \
\( -name '*[sS][uU]?[xX]' -o -name '*[sS][uU]FFI[xX]' \)
Run Code Online (Sandbox Code Playgroud)
as[?FFI]将匹配?, ForI而不是?or FFI。
如果您可以保证您的文件和目录名称不包含换行符,您还可以find打印每个文件路径,并用于awk过滤文件名:
find "$file_dir1" "$file_dir2" |
awk -F/ 'tolower($NF) ~ /^searchpattern/'
Run Code Online (Sandbox Code Playgroud)
(请注意,它不一定等同于上面toupper($NF) ~ /^SEARCHPATTERN/的?情况,或者因为并非每个人(每个语言环境)都同意字母的大写i I或小写变体是什么(例如,是大写还是??);您也会找到一些变体grep -i或其他进行大小写不敏感匹配的工具)。