tcsh에서 특정 문자의 발생 횟수 찾기

tcsh에서 특정 문자의 발생 횟수 찾기

파일 이름에 "_"가 포함된 특정 유형의 파일 수를 찾으려고 합니다.

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

if 문이 올바르지 않기 때문에 작동하지 않지만 txt 파일의 파일 이름에 "_"가 있는지 확인한 다음 n을 1씩 증가시키도록 정의하는 방법을 잘 모르겠습니다.

답변1

한 가지 방법은 grep 대신 쉘의 globbing 기능을 사용하는 것입니다.

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

다른 이유로 필요한 경우 "if grep" 구문은 다음과 같습니다.

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

( -qgrep에게 조용히 하고 아무 것도 인쇄하지 말라고 지시합니다.)

답변2

특정 문자가 포함된 파일 이름 수를 얻으려면 다음을 사용하십시오.

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

발견된 문자가 포함된 파일 이름만 인쇄한 다음 반환된 항목 수를 계산합니다. tcsh에서는 할당보다 먼저 수행해야 합니다 set.

답변3

이 명령을 함께 사용하여 이름에 포함된 파일 수를 find얻을 수 있습니다.wc_

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

[path]검색하려는 디렉토리로 바꾸십시오 .

관련 정보