find에서 변수 인쇄 및 업데이트

find에서 변수 인쇄 및 업데이트

명령 을 실행 find하고 명령이 반환하는 파일을 처리하는 동시에 처리된 파일 수를 에코하여 진행 상황에 대한 아이디어를 제공하고 싶습니다.

지금 내 명령은 (예를 들어) 다음과 같습니다.

COUNT=0\; find . -name '*.*' -exec echo "$COUNT: \c" \; -exec echo {} \;

그러나 결과적으로 카운트가 에코되지 않습니다(그리고 이를 늘리는 방법도 모르겠습니다). 나는 그것이 나에게 다음과 같은 것을 주기를 원합니다:

0: ./FileOne.txt
1: ./FileTwo.txt
...
205: ./FileTwoHundredAndFive.txt

답변1

실행된 명령은 find독립적입니다. 각 명령은 -exec새로운 명령을 시작합니다. 현재 카운트를 어딘가(파일)에 저장하지 않고 한 명령에서 다음 명령으로 전송할 수 있는 방법이 없으므로 매우 느립니다.

파일을 볼 때마다 인쇄 내용을 찾고 입력 줄 수를 계산하는 프로그램에 출력을 파이프할 수 있습니다.

find … -print -exec 'the stuff you want to do' | nl

버퍼링으로 인해 지연된 후에 카운트가 인쇄됩니다. 바라보다파이프라인에서 버퍼링 끄기버퍼링이 꺼진 경우.

stdbuf -oL -eL find … -print -exec 'the stuff you want to do' | nl

관련 정보