파일 이름에 "_"가 포함된 특정 유형의 파일 수를 찾으려고 합니다.
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
( -q
grep에게 조용히 하고 아무 것도 인쇄하지 말라고 지시합니다.)
답변2
특정 문자가 포함된 파일 이름 수를 얻으려면 다음을 사용하십시오.
set n=`ls *.txt | fgrep -c _`
발견된 문자가 포함된 파일 이름만 인쇄한 다음 반환된 항목 수를 계산합니다. tcsh에서는 할당보다 먼저 수행해야 합니다 set
.
답변3
이 명령을 함께 사용하여 이름에 포함된 파일 수를 find
얻을 수 있습니다.wc
_
set n=`find [path] -maxdepth 1 -name "*_*.txt" | wc -l`
[path]
검색하려는 디렉토리로 바꾸십시오 .