ls의 메모리 활용도 ** |

ls의 메모리 활용도 ** |

저는 다음과 같은 작업을 수행하는 간단한 bash 스크립트를 상속받았습니다. 변수를 여러 디렉토리에 설정합니다.

DIR="dir1 dir2 dir3 ... dirx"

그런 다음 다음을 수행합니다.

for i in `echo $DIR`
do
   for j in `ls $i/*<regexp>*`
   do
      (<command to $j>)
   done
done

지금 내가 보는 것은 파일 자체가 50GB보다 크지 않지만 ps 출력을 기준으로 스크립트 부분이 200GB 이상의 메모리를 차지하는 것을 볼 수 있다는 것입니다.

쉘이 모든 파일을 하나로 모으나요? 이를 수행하는 더 효율적인 방법은 무엇입니까?

답변1

200GB의 메모리는 상당히 과도한 것으로 보이며 위에 표시된 명령으로는 설명할 수 없습니다. 그러나 명령 대체를 피함으로써 루프를 더욱 효율적으로 만들고 오류 발생 가능성을 줄일 수 있습니다.

for i in $DIR
do
   for j in "$i"/*<pattern>*
   do
      (<command to $j>)
   done
done

관련 정보