수백 개의 입력이 있는 for 루프를 종료하는 방법

수백 개의 입력이 있는 for 루프를 종료하는 방법

가끔씩 수백 개의 디렉터리에서 무언가를 찾는 for 루프를 종료해야 하지만 단일 명령으로 이를 수행할 수 있는 방법을 찾지 못했습니다. 이 작업을 수행할 때마다 해당 디렉터리를 건너뛰고 모든 디렉터리를 탐색할 때까지 다음 디렉터리로 이동합니다. 단 하나의 명령으로 어떻게 모든 것을 멈출 수 있습니까?

예:

for index in $(ls -1 /path/to/direcorties)
 do
  find $index -name some_file.gz | awk -F/ '{print $2}' >> /other/path/file.txt
 done

모두 삭제해야 한다면 디렉터리가 있는 디렉터리를 건너뛰고 다음 디렉터리로 이동하게 됩니다. 즉, 목록을 모두 통과할 때까지 목록의 각 디렉터리에 대해 새 PID를 삭제해야 한다는 의미입니다.

답변1

단, "ls 구문 분석"을 단일 항목으로 재구성하는 것이 좋습니다.

find /path/to/directories -name ...

...이것은 몇 가지 문제를 해결할 것입니다(그 중 하나는 공백이 있는 디렉토리가 있고 다른 하나는 Control-C가 기본 프로세스를 종료하는 것입니다). 이와 같은 대화형 셸 프로세스를 종료하는 것에 대한 조언은 해당 프로세스를 일시 중지한 다음 종료하는 것입니다. , 방법은 다음 ControlZ같습니다 .kill %

관련 정보