찾기 명령의 점은 왜?


14

일반적으로 find다음과 같은 명령이 표시됩니다.

$ find . -name foo.txt

현재 디렉토리에서 검색을 시작할 때 내 컴퓨터 (Ubuntu, Cygwin)에서 점없이 동일한 결과를 얻습니다.

왜 일반적으로 포함됩니까? 그것은 명백한 관습입니까, 아니면 특정 시스템에서 필요합니까?

답변:


27

일부 버전 *에서는 find검색을 시작할 디렉토리 인 경로 인수를 제공해야합니다. 점은 .단순히 현재 디렉토리가 일반적으로 검색하려는 위치임을 나타냅니다.

이를 검색의 기초가되는 경로로 바꿀 수 있습니다. find의 일부 버전에서는 경로 인수가 없으면 현재 디렉토리가 내포되어 있기 때문에이 상태가 유지 될 수 있습니다.

man find인수에 대한 자세한 내용을 쉘에서 실행할 수 있습니다 . 예를 들어 광산 의 사용법 개요 는 경로 인수가 선택 사항임을 나타냅니다 (사각형 brackest 내부 []).

   find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

find인수없이 my를 실행 하면 현재 폴더에서 시작하는 모든 파일과 디렉토리가 반환됩니다. 귀하의 예는 단순히 검색을 시작해야하며 명시 적으로 검색 필터 중 하나로 .표현 -name foo.txt을 포함 해야 합니다.

* 특히 모든 BSD 변형POSIX 표준을 엄격하게 준수하는 모든 것 . GNU find 는 옵션이 될 수 있습니다.


1
어떤 버전의 find가 이것을 요구하는지 아는가? 아니면 어디서 더 조사 할 수 있을까요? (찾기 구글에 어렵다)
에릭 윌슨

기본 검색 경로에 대한 흥미로운 것.
rozcietrzewiacz

2
대부분의 BSD 찾기 변형에는 경로 인수가 필요하지만 GNU 찾기 에서는 선택 사항입니다. 변형이 존재할 수 있습니다.
Caleb

2
최소한 2008 POSIX 표준 사양에서 path찾기위한 필수 인수 입니다.
Caleb

1
Nit pick :“이 점을 원하는 경로로 바꿀 수 있습니다”→“원하는 경로 ”라고 말할 수 있기 때문에 find dir1 dir2 dir3 -name foo.txt.
G-Man, 'Reinstate

5

예를 들어, AIX 버전의 find에는 경로가 필요하며 경로가 제공되지 않으면 실행되지 않습니다.

# oslevel -s
5300-08-03-0831
# find -name bob
Usage: find [-H | -L] Path-list [Expression-list]

# oslevel -s
6100-03-01-0921
# find -name bob
Usage: find [-H | -L] Path-list [Expression-list]

일부 AIX 시스템에는 경로없이 처리 할 수있는 GNU 찾기가 설치되어 있지만,

# oslevel -s
6100-03-01-0921
# /opt/freeware/bin/find -version
GNU find version 4.1
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.