본문 바로가기

기타

[Ubuntu] sed: argument list too long 에러 해결

몇 만 개의 텍스트 파일을 한 번에 수정하려다 보니 "sed: 인수 명단이 너무 김" 에러가 나타났다.

https://tecadmin.net/solutions-to-the-argument-list-too-long-error/ 이 글의 첫 번째 방법을 참고하여 해결하였다.

기존 명령어:

# 모든 텍스트 파일 내용에 대하여, "0 "을 "28 "으로 변경 (객체인식 학습을 위한 bbox 라벨링 번호를 바꾸고자 했다.)
sed -i 's/^0 /28 /g' *.txt

Xargs를 이용한 명령어:

# ".txt"라는 이름의 파일을 모두 찾은 뒤, xargs 매개변수로 넘겨주어 뒤의 명령어(sed -i 's/^0 /28 /g')를 수행한다
find . -name "*.txt" | xargs sed -i 's/^0 /28 /g'

이래도 해결이 안되면 파일명 자체 필터링을 통해 범위를 축소해 여러 번 명령어를 수행하려고 했는데, 다행히 문제 없이 변경되었다.