심볼릭 링크 및 복제 관련 문제

심볼릭 링크 및 복제 관련 문제

따라서 다음 명령은 /source/allsubdirectroies( /usr/hdp/2.6.3.0-235) 에서 /target( /tmp/jar263) 폴더로 복사합니다.

find /usr/hdp/2.6.3.0-235 -type f -name "*.jar" -exec cp {} /tmp/jar263 \;

나에게 문제는 소스 디렉토리에 다음과 같은 심볼릭 링크가 있는 파일이 있다는 것입니다. hadoop-nfs.jar -> hadoop-nfs-2.7.3.2.6.3.0-235.jar

그래서 폴더를 확인하면 /tmp/jar263다음 파일이 표시됩니다.

hadoop-nfs-2.7.3.2.6.3.0-235.jar

그러나 내가 원하는 것은 "hadoop-nfs.jar" 이름입니다.

파일의 원래 이름 대신 링크 이름을 얻을 수 있는 방법이 있습니까?

usr/hdp/2.6.3.0-235/폴더/하위 폴더 구조에는 많은 링크가 있습니다.

답변1

에서 man find우분투 맨페이지 버전:

-L 기호 링크를 따릅니다. find가 파일에 대한 정보를 확인하거나 인쇄할 때 사용되는 정보는 링크 자체가 아닌 링크가 가리키는 파일의 속성에서 가져와야 합니다(깨진 기호 링크이거나 find가 가리키는 파일을 확인할 수 없는 경우 제외). ) 링크 포인트에서 ). 이 옵션을 사용하는 것은 -noleaf를 의미합니다. 나중에 -P 옵션을 사용하면 -noleaf가 계속 작동합니다. -L이 적용되고 find가 검색 중에 하위 디렉토리에 대한 기호 링크를 찾으면 기호 링크가 가리키는 하위 디렉토리가 검색됩니다.

-L 옵션이 적용되면 -type 술어는 링크 자체가 아닌 기호 링크가 가리키는 파일 유형과 항상 일치합니다(기호 링크가 끊어지지 않는 한). -L을 사용하면 -lname 및 -ilname 조건자가 항상 false를 반환합니다.

그래서 find -L /usr/hdp/2.6.3.0-235 -type f -name "*.jar" -exec cp {} /tmp/jar263 \;그것은 이루어져야합니다. 아래 옵션을 꼭 읽어보세요-유형, roaima가 제안한 대로 이상한 동작이 발생하는 경우(find는 OSX와 같이 약간 다르게 동작할 수 있음)

관련 정보