카테고리 보관물: Server

Server

파일 수를 계산하는 Bash 스크립트 존재하는지 여부에 따라 다른 메시지를

스크립트가 있는데 파일이 존재하는지 여부에 따라 다른 메시지를 표시하고 싶습니다. 나는 다음과 같은 스크립트를 가지고있다 :

count=ls /import/*.zip | wc -l

echo "Number of files: " $count
if [ "$count" > "0" ]; then
    echo "Import $count files"
else
    echo "**** No files found ****"
fi

그러나 파일이 없으면 No such file or directory0 파일 대신 표시 됩니다. 디렉토리에 /import/디렉토리가 있으므로 ls항상 0보다 큰 값을 반환하므로 명령을 수행 할 수 없습니다 .

특정 확장명 (.zip, .gz 등)의 파일 수를 계산하고 bash 스크립트에서 해당 값을 사용하여 파일 수를 표시 한 다음 if 문에서 사용하여 다른 메시지를 표시하려면 어떻게해야합니까?



답변

count=$(find /import -maxdepth 1 -name '*.zip' | wc -l)


답변

이것으로 시도하십시오 :

count=$(find /import/ -maxdepth 1 -type f -name '*.zip' | wc -l)
...
if [ $count -gt 0 ] ; then
  ...
else
  ...
fi

아이디어는 비트 버킷으로 전송하여 STDERR에 인쇄되는 “파일 없음”오류를 숨기고 숫자를 비교하기 위해 적절한 테스트 기능을 사용하는 것입니다. ( -gt“이상”을 의미합니다.도 있습니다 -eq, -lt, -ge, 등)


답변

스크립트를 시도했지만 예상대로 일치하는 파일이 없으면 출력에 0 개의 파일 표시되지만 ls직전 에 오류가 표시 됩니다. 이것을 해결하는 것은 매우 쉽습니다 ls. 도랑 할 필요가 없습니다 . 첫 번째 줄을 다음과 같이 바꾸십시오.

count=$(ls /import/*.zip 2>/dev/null| wc -l)

2>/dev/null/dev/null오류 메시지를 표시하지 않고 stderr을로 리디렉션 합니다.


답변