깊이 / 자르기에 대한 Solaris?


10

디렉토리 내에서 일부 파일을 찾으려고합니다. 기본적으로 찾기 command는 내가 지정한 디렉토리와 하위 디렉토리를 검색합니다.

내가 사용하려고 depth/maxdepth하고 prune있지만, 아무것도이를 극복하는 데 도움이되지 않습니다. 누군가 솔라리스에서 깊이 / 자루를 사용하는 올바른 방법을 지적 할 수 있습니까?

내 코드는 다음과 같습니다

find file_path -depth 1 -name '*.log'

다음과 같은 오류가 발생합니다.

find: bad option 1
find: [-H | -L] path-list predicate-list

답변:


15

이름이 모호한 두 가지 관련없는 옵션을 혼동하고 있습니다.

  • -depth아무 주장도하지 않습니다. 존재하는 경우 find디렉토리 자체를 처리하기 전에 디렉토리의 내용을 처리하도록 지시 합니다.
  • -maxdepth N (N은 정수) 재귀를 N 레벨의 서브 디렉토리로 제한합니다.

-maxdepth옵션은의 일부 버전에서는 발견 find되지만 Solaris 에서는 확장 되지 않습니다. 하위 디렉토리에서는 사용하지만 최상위 디렉토리는 제외하고 표준 옵션 만 사용하여 find재귀없이 디렉토리를 처리하는 방법이 -prune있습니다. 최상위 디렉토리와 일치하는 유일한 방법은 이름을 기준으로하므로 이름을 지정하십시오 .(하위 디렉토리의 이름이 아님).

find /directory/to/traverse/. -name . -o \
                              -type d -prune -o \
                              -name '*.log' -print

나는이 문제에 직면 해 있었고이 솔루션이 도움이되었습니다. 나는 이것을 작동시키는 해결책을 찾으려고 하루를 보냈다. 솔라리스
Kevin Teljeur

sed를 사용하여 /./ find $ {directory} / sh /를 제거하는 데 문제가 있습니까? -name -o -type d -prune -o -print | SED의 /\/\.\//\// '
에단 포스트

@EthanPost 당신은 그렇게하지만하지 않고 구현을 찾을 수 -mindepth-maxdepth사라지는 품종이다. 당신의 발견은 경우 -maxdepth, 사용find /directory/to/traverse -mindepth 1 -maxdepth 1 -name '*.log'
질 'SO-정지 존재 악마'

@Gilles 이러한 환경에서 실행해야하는 프레임 워크를 구축 할 때 하나만 사용하면됩니다. 그 시장은 언젠가 나의 빵과 버터일지도 모른다! 도와 주셔서 감사합니다.
Ethan Post
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.