몇 가지 일반적인 *nix 시스템(예: Debian, CentOS, Arch 및 Kali)을 고려하십시오.
저는 항상 find
GNU find를 사용한 기억이 없습니다.한 가지 예나는 GNU find의 구문이 더 간단할 수도 있다고 생각했습니다.가능한더 적은 수의 작업을 허용합니다).
두 가지 질문이 있습니다.
일반 시스템의 기본 "찾기 또는 실행" 유틸리티 입니까
find
, 아니면 시스템에 포함되어 있습니까?둘 다find
그리고GNU find
?예전에는
GNU find
고의로더 쉽게find
?
답변1
GNU 유틸리티는 일반적으로 POSIX 표준을 구현한 다음 이를 추가 기능으로 확장하여 편의성을 높입니다(그러나 반면에 Unices 간의 이식성은 감소합니다). 이식성 측면으로 인해 이 사이트에서 GNU 유틸리티 또는 유틸리티의 다른 특정 구현 사용을 가정할 시기를 매우 신중하게 나타내는 답변이나 의견을 가끔 볼 수 있습니다.
Linux 시스템을 사용하는 경우매우GNU 구현을 사용하고 있을 수도 find
있고 find
다른 구현을 설치하지 않을 수도 있습니다. Linux가 아닌 시스템에서는 기본 GNU가 있고 find
GNU도 설치 됩니다 find
(보통 이름으로 gfind
또는 덜 자주 gnufind
).
대부분의 GNU 유틸리티와 마찬가지로 GNU find
구현도 다음을 수행합니다.연장하다 find
표준. 따라서 "더 단순"하지는 않지만 편의를 위해 더 복잡하며 특정 복잡한 작업을 수행하기 위해 이를 사용하는 것이 엄격하게 표준을 준수하는 find
.
find
예를 들어, 확장 구현은 -maxdepth
표준에서 언급되지 않은 조건자를 구현하는 경우가 많으며, 특히 GNU는 일반 작업을 수행하는 데 사용되는 조건자뿐만 아니라 다양한 형식 지정 가능성(표준에는 없는)을 사용하여 발견된 경로 이름도 인쇄해야 합니다. 경로 이름 표현식 일치에 대한 다양한 유형과 기타 많은 비표준 술어에 대해 일부는 다른 구현에서도 찾을 수 있습니다(의미가 약간 다를 수 있으며 사용되는 항목에 따라 약간 다르게 작동할 1 ).-mindepth
find
-printf
find
-printf
find
-execdir
find
귀하가 연결한 답변에 사용된 조건자는 -delete
비표준이지만 GNU find
및 find
기타 비 Linux 시스템에서 구현됩니다. GNU는 비어 있지 않은 디렉토리를 삭제하는 데 사용하면 불만을 find
표시 -delete
하지만 OpenBSD와 같은 해당 옵션은 find
그렇지 않습니다(비어 있지 않은 디렉토리도 삭제하지 않음).
배포판에 관계없이 대부분의 Linux 시스템은 동일한 coreutils 및 findutils 도구 세트를 사용합니다(분명히 busybox와 같은 변형이 있음). 완전히 다른 도구 세트를 사용하여 이를 구현하려면 오픈 소스 BSD 시스템이나 macOS, Solaris, AIX 또는 기타 상용 Unix로 이동해야 합니다.
1 GNU는 사용될 때 경로 이름 앞에 접두사를 붙이지 find
만 일부 다른 구현에서는 그렇지 않습니다../
-execdir
답변2
사람들이 일반적으로 Linux라고 부르는 것은 GNU/Linux, 즉 Linux와 GNU라고 부르는 것이 더 적절합니다. 따라서 여러분이 사용하고 있는 도구는 아마도 GNU일 것입니다.
- Linux: GNU/Linux, Android 및 기타 여러 시스템에서 사용되는 커널입니다.
- GNU: 일반적으로 Linux 커널과 함께 사용되는 운영 체제이지만 BSD, Hurd, Cygwin(커널로 가장하는 Microsoft Windows용 DLL), WSL(Windows Subsystem for Linux: Linux가 없는 GNU), Microsoft Windows와도 사용할 수 있습니다. ), HPUX, Solaris, Dec Athena 등
따라서 아마도 GNU find를 사용하고 있을 것입니다.
GNU는 재작성 프로젝트입니다.무료(무료는 가격이 아니라 자유를 의미함) 버전와 같은 도구를 포함한 모든 Unix와 마찬가지로 find
GNU 프로젝트는 POSIX 준수에 대해 걱정하지 않습니다. POSIX 준수는 타당할 때 준수할 뿐만 아니라 개선도 수행합니다.
또한 하나만 존재한다는 가정은 find
잘못되었습니다.