가장 좋은 방법은 디렉토리 트리의 각 파일에 대해 명령을 실행하는 것입니다.

가장 좋은 방법은 디렉토리 트리의 각 파일에 대해 명령을 실행하는 것입니다.

쉘 스크립트, find 및 xargs의 루프를 포함하여 이를 수행하는 여러 가지 방법이 있는 것으로 보입니다. 다음 중 어느 것이 가장 좋고, 어느 것이 가장 이식성이 좋습니까?

답변1

find . -exec <command> {} \;

현재 디렉토리의 경우 트리의 루트 또는 일반적으로 다음과 같습니다.

find <directory> -exec <command> {} \;

답변2

공백이 포함된 파일 또는 디렉터리 이름이 있는지 -print0확인 -0하려면 옵션 을 사용하세요 .xargs

find {dir} -print0 | xargs -0r {command}

find 옵션 -print0은 파일 이름을 NUL공백으로 구분된 목록이 아닌 -separated 목록으로 인쇄하는 반면, -0옵션은 공백이 아닌 xargs입력을 중단하도록 지시합니다 . 은 Unix 파일 이름에 허용되지 않는 문자 중 하나 NUL이므로 NUL파일 이름의 일부로 오인될 가능성이 없습니다.

입력이 없어도 오류가 발생하지 않도록 하는 옵션 -r이 있습니다 .xargs

답변3

이식성이 문제라면 쉘 특정 방식을 사용하지 않을 것입니다. (많은 사람들이 다양한 쉘을 사용하지만 일반적으로 find 및 xargs는 누구도 감히 급진적인 방식으로 변경할 수 없는 기본 도구입니다.) .

find 및 xargs의 기본 인수를 사용하면 보다 이식 가능한 솔루션을 얻을 수 있습니다.

답변4

사용 중인 명령 버전에 재귀 작업을 위한 플래그가 아직 없는지 확인하세요. :)

관련 정보