find에서 고유한 값 찾기

find에서 고유한 값 찾기

하위 디렉터리도 있는 디렉터리에서 고유한 파일을 찾고 싶습니다.

특정 유형의 파일이 있습니다 .lib.

.lib서로 다른 하위 디렉터리에 동일한 파일이 있습니다. .lib내 홈 디렉터리에서 고유한 이름을 가진 파일 목록을 찾아야 합니다 . 이를 수행할 수 있는 방법이 있습니까?

현재 내가 사용하고 있는

find -name "*.lib" > lib_file_list

그러나 일부 .lib파일이 여러 하위 디렉터리에 있기 때문에 중복된 결과가 발생합니다. CSH를 사용하고 있습니다.

답변1

GNU 도구 사용:

find . -name '*.lib' -print0 | awk -v RS='\0' -F/ '! seen[$NF]++'

답변2

이것이 내가하려는 일입니다.

find -name '*.lib' -printf '%f\n' | sort | uniq > lib_file_list

기억해야 할 몇 가지 사항은 다음과 같습니다.

  • 이것은 파일의 전체 경로를 제공하지 않습니다. (어쨌든 귀하의 질문에 일부 경로를 제거해야 하기 때문에 중요하지 않다고 생각합니다.)
  • 파일 이름에 개행 문자가 있으면 실패합니다.
  • 물론 이는 GNU 도구를 사용할 수 있다고 가정합니다.

관련 정보