名称中包含特定字符串的文件数

Count of no of files which contain a particular string in its name

我只是想计算给定目录中有多少文件在其名称中的任意位置包含特定字符串(不是字符串的总出现次数)并忽略隐藏目录

示例

>> ls -a
.hidden_dir
string1.nfo 
'string1 - string.exe' 
string5-.mkv

此处,忽略隐藏目录,3 个文件在其名称中的任何位置包含字母“string”,所以我希望 grep 正确 return 3 但它不起作用 & returns 0 . 这是我正在使用的 grep 命令 -

grep --exclude-dir=".*" -l "string" * | wc -l

您可以使用这个纯 bash 代码:

arr=(*string*) && printf '%d\n' "${#arr[@]}"

详情:

  • arr=(*string*): 查找当前目录中所有名称为 string 的条目,并将它们放入数组 arr
  • printf '%d\n' "${#arr[@]}":打印数组长度arr

根据下面的评论,这里有一个 find 解决方案:

find . -type f -maxdepth 1 -iname '*string*' ! -name '*.txt' \
-exec bash -c 'printf "%s\n" "${@//*/.}"' _ {} + | wc -l