find -exec bash -c {} +: 두 개에 대해 하나의 파일만 발견되는 이유는 무엇입니까?

find -exec bash -c {} +: 두 개에 대해 하나의 파일만 발견되는 이유는 무엇입니까?
touch 1.txt 2.txt
find . -name "[12].txt" -exec sh -c 'echo "${1}"' sh {} + -exec echo {} +
./2.txt
./2.txt ./1.txt

echo내부적으로 sh -c하나의 파일만 출력되는 이유는 무엇입니까 ? 오늘 나는 find그것이 어떻게 작동하는지 이해한다고 생각합니다"find"의 -exec 옵션 이해그런데 지금 또 혼란스러워요. 같은 결과를 얻었습니다 -exec bash. 티아

답변1

그리고:

-exec sh -c 'echo "${1}"' sh {} +

findsh요청한 sh첫 번째 파일( ${1}또는 $1간단하게) 에 가능한 한 많은 파일을 전달합니다 echo. 이들 모두를 전달하려면 대신 다음을 사용하십시오 "$@".

-exec sh -c 'echo "$@"' sh {} +

또는 sh각 인수에 대해 한 번 호출하려면 위치 인수가 있는 루프를 사용합니다(위치 인수는 기본적으로 루프가 반복하는 항목입니다).echofor

-exec sh -c 'for file do
               echo "$file"
             done' sh {} +

관련 정보