[linux] 리눅스 대량 파일 옮기기: Argument list too long 에 대한 해결방법
들어가며
안녕하세요, IT 전문 블로거입니다. 오늘은 리눅스에서 대량의 파일을 옮길 때 발생하는 Argument list too long
문제를 해결하는 방법에 대해 알아보겠습니다. 이 문제는 이 URL에서 자세한 내용을 확인할 수 있습니다.
문제 상황
Linux에서 대량의 파일을 한 번에 옮기려고 할 때, 예를 들어 mv * /target/directory/
와 같은 명령어를 사용하면 Argument list too long
에러가 발생할 수 있습니다. 이 문제는 명령어 인자의 길이가 너무 길어서 발생하는데, 이는 사용자가 처리할 수 있는 인자의 최대 길이를 넘어서기 때문입니다.
해결 방법
이 문제를 해결하기 위해 다음과 같은 방법을 사용할 수 있습니다.
1. find와 xargs를 사용하는 방법
샘플1
find . -type f | xargs -i mv "{}" ../
현재 디렉토리의 모든 파일을 상위 디렉토리로 옮길 수 있다.
샘플2
find . -type f -name '*' -print0 | xargs -0 mv -t /target/directory/
find
명령어를 사용하여 현재 디렉토리에서 모든 파일을 찾은 후, xargs
를 사용하여 찾은 파일들을 대상으로 mv
명령어를 실행합니다. -print0
과 -0
옵션을 사용하여 파일 이름에 공백이 포함되어 있어도 처리할 수 있습니다.
2. find와 -exec 옵션을 사용하는 방법
find . -type f -name '*' -exec mv {} /target/directory/ \;
find
명령어에서 -exec
옵션을 사용하여 찾은 파일들을 대상으로 mv
명령어를 실행합니다. 이 방법도 파일 이름에 공백이 포함되어 있어도 처리할 수 있습니다.
3. for loop를 사용하는 방법
for file in *; do mv "$file" /target/directory/; done
Bash에서 for loop를 사용하여 모든 파일을 순회하며 mv
명령어를 실행합니다. 이 방법도 파일 이름에 공백이 포함되어 있어도 처리할 수 있습니다.
정리
이렇게 대량의 파일을 옮기는 데 발생하는 Argument list too long
문제를 해결하는 방법을 알아보았습니다. 이 중에서 가장 적합한 방법을 선택하여 사용하시면 됩니다. 참고로, 이러한 문제는 파일을 복사하거나 삭제할 때도 발생할 수 있으므로 이를 해결하는 방법도 비슷하게 적용할 수 있습니다.
댓글남기기