Grep
在 tcsh 中查找某個字元的多次出現
我正在嘗試查找文件名中包含“_”的某些類型文件的數量。
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
.