저는 PHP 셸을 가지고 있고 이 작업을 수행하는 함수가 있습니다(하지만 scandir($path)
함수를 호출하면 PHP 제한으로 인해 오류가 발생합니다). 따라서 동일한 작업을 수행하려면 bash 셸을 사용해야 합니다.
구분 기호로 구분된 3가지 항목을 모두 나열하는 하나의 명령일 수도 있고, 3개의 명령일 수도 있습니다.
가장 좋은 접근 방식은 무엇입니까? 내가 생각할 수 있는 유일한 것은 find
몇 가지 옵션을 사용하여 3번을 수행하는 것입니다.-maxdepth 1
답변1
GNU를 사용하면 find
다음을 호출할 수 있습니다.
find /some/dir -mindepth 1 -maxdepth 1 -type f \
\( -executable -printf 'X%p\0' -o -printf 'F%p\0' \) -o \
-type d -printf 'D%p\0'
출력은 첫 번째 문자가 식별되는 NUL로 구분된(NUL은 파일 경로에 나타날 수 없는 유일한 문자) 레코드 목록입니다.유형( X
, F
, D
실행 가능한 일반 파일, 기타 일반 파일 및 디렉터리에 사용됨)
심볼릭 링크의 경우 심볼릭 링크 대상 유형을 고려하려면 위 -xtype
대신 사용하십시오. 이 찾기 명령을 실행하는 프로세스에서 실행 가능한 파일을 반환합니다. 다른 유형의 파일(fifo, 소켓, 게이트, 장치...)은 무시됩니다. 디렉토리 항목 도 무시됩니다.-type
-executable
.
..