find 명령과 함께 -exec {} ls를 사용할 때 권한이 거부되었습니다.

find 명령과 함께 -exec {} ls를 사용할 때 권한이 거부되었습니다.

다음 명령을 실행하면 permission denied모든 파일에 대한 메시지가 표시됩니다.

find /data/code/ -name "*.jar" -exec {} ls \;


find: `/data/code/project/shared/build/thirdparty/log4j-1.2.8/commons-logging-1.0.4.jar': Permission denied

하지만 내가 그렇게 한다면

ls  /data/code/project/shared/build/thirdparty/log4j-1.2.8/commons-logging-1.0.4.jar

메시지 없이 올바른 출력을 제공하여 인쇄됩니다 permission denied.

/data/code/project/shared/build/thirdparty/log4j-1.2.8/commons-logging-1.0.4.jar

내가 뭘 잘못했나요?

ps: 모든 jar 파일을 나열하고 삭제해야 합니다./data/code

답변1

그것을 하는 동안:

find /data/code/ -name "*.jar" -exec {} ls \;

발견된 파일(예: )을 인수 /data/code/project/shared/build/thirdparty/log4j-1.2.8/commons-logging-1.0.4.jar로 실행하려고 하여 권한 거부 오류가 발생했습니다.ls

순서를 바꾸세요.

find /data/code/ -name "*.jar" -exec ls {} \;

GNU에는 옵션도 find있으므로 -lsGNU에서는 다음 find을 수행할 수 있습니다.

find /data/code/ -name "*.jar" -ls

관련 정보