查找 tcsh 中某个字符出现的次数

查找 tcsh 中某个字符出现的次数

我正在尝试查找文件名中包含“_”的某些类型的文件的数量。

foreach txt ( 'ls *.txt')
set n=0
if(grep _ txt) then
@ n = n+1
endif
end

它不起作用,因为我的 if 语句不正确,但我不确定如何定义说如果 txt 文件的文件名中包含“_”,则将 n 加 1。

答案1

一种方法是使用 shell 的通配功能而不是使用 grep。

set n=0
foreach txt (*_*.txt)
    @ n++
end

如果您出于其他原因需要,“if grep”的语法是:

if ( { grep -q _ $var } ) then
  ...
endif

-q告诉 grep 保持安静,不要打印任何内容。)

答案2

要获取具有特定字符的文件名的数量,请使用:

set n=`ls *.txt | fgrep -c _`

这将仅打印包含找到的字符的文件名,然后计算返回的条目数。在 tcsh 中,您需要在赋值前加上set

答案3

您可以find结合使用该命令来获取名称中wc带有 a 的文件的数量:_

set n=`find [path] -maxdepth 1 -name "*_*.txt" | wc -l`

替换[path]为您要搜索的目录。

相关内容