
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 {} +
find
sh
요청한 sh
첫 번째 파일( ${1}
또는 $1
간단하게) 에 가능한 한 많은 파일을 전달합니다 echo
. 이들 모두를 전달하려면 대신 다음을 사용하십시오 "$@"
.
-exec sh -c 'echo "$@"' sh {} +
또는 sh
각 인수에 대해 한 번 호출하려면 위치 인수가 있는 루프를 사용합니다(위치 인수는 기본적으로 루프가 반복하는 항목입니다).echo
for
-exec sh -c 'for file do
echo "$file"
done' sh {} +