Grep

在 tcsh 中查找某個字元的多次出現

  • August 20, 2018

我正在嘗試查找文件名中包含“_”的某些類型文件的數量。

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

它不起作用,因為我的 if 語句不正確,但我不確定如何定義 txt 文件是否在文件名中包含“_”,然後將 n 增加 1。

一種方法是使用 shell 的 globbing 功能,而不是使用 grep。

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

如果出於其他原因需要,“if grep”的語法是:

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

-q告訴 grep 保持安靜,不要列印任何內容。)

要獲取具有特定字元的文件名的數量,請使用:

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

這將僅列印找到該字元的文件名,然後計算返回的條目數。在 tcsh 中,您需要在分配前加上set.

引用自:https://unix.stackexchange.com/questions/32645