몇 개의 파일로 작업을 수행하는 일반적인 방법은 다음과 같습니다.
for f in $(ls); do …
이제 공백이나 다른 이상한 문자가있는 파일로부터 안전하기 위해 순진한 방법은 다음과 같습니다.
find . -type f -print0 | while IFS= read -r -d '' file; …
여기서는에서와 -d ''같이 ASCII NUL을 설정하는 줄임말입니다 -d $'\0'.
그러나 왜 그렇습니까? 왜 ''와 $'\0'같은? 빈 문자열이있는 Bash의 C 루트로 인해 항상 null로 종료됩니까?
for i in $(ls)는 멍청한 짓이다. 나는 그것을 나쁜 예라고 여기는 부끄러운 일이다.
find … -exec파일을 반복 하는 대신 에 사용하는 것이 좋습니다. 이는 대신에 for 루프를 사용하는 대부분의 경우에 효과적입니다. 여기, find당신을 위해 모든 것을 돌봐.