[linux] 재귀 파일 목록의 깊이를 제한하는 방법은 무엇입니까?

리눅스에서 재귀 파일 목록의 깊이를 제한하는 방법이 있습니까?

현재 사용중인 명령은 다음과 같습니다.

ls -laR > dirlist.txt

그러나 약 200 개의 디렉토리가 있으며 각 디렉토리에는 10 개의 디렉토리가 있습니다. 따라서 너무 오래 걸리고 너무 많은 시스템 리소스가 필요합니다.

내가 정말로 관심이있는 것은 첫 번째 수준 하위 디렉토리에 대한 소유권 및 권한 정보입니다.

drwxr-xr-x 14 root   root  1234 Dec 22 13:19 /var/www/vhosts/domain1.co.uk
drwxr--r-- 14 jon    root  1234 Dec 22 13:19 /var/www/vhosts/domain1.co.uk/htdocs
drwxr--r-- 14 jon    root  1234 Dec 22 13:19 /var/www/vhosts/domain1.co.uk/cgi-bin
drwxr-xr-x 14 root   root  1234 Dec 22 13:19 /var/www/vhosts/domain2.co.uk
drwxr-xrwx 14 proftp root  1234 Dec 22 13:19 /var/www/vhosts/domain2.co.uk/htdocs
drwxr-xrwx 14 proftp root  1234 Dec 22 13:19 /var/www/vhosts/domain2.co.uk/cgi-bin
drwxr-xr-x 14 root   root  1234 Dec 22 13:19 /var/www/vhosts/domain3.co.uk
drwxr-xr-- 14 jon    root  1234 Dec 22 13:19 /var/www/vhosts/domain3.co.uk/htdocs
drwxr-xr-- 14 jon    root  1234 Dec 22 13:19 /var/www/vhosts/domain3.co.uk/cgi-bin
drwxr-xr-x 14 root   root  1234 Dec 22 13:19 /var/www/vhosts/domain4.co.uk
drwxr-xr-- 14 jon    root  1234 Dec 22 13:19 /var/www/vhosts/domain4.co.uk/htdocs
drwxr-xr-- 14 jon    root  1234 Dec 22 13:19 /var/www/vhosts/domain4.co.uk/cgi-bin

편집하다:

최종 명령 선택 :

find -maxdepth 2 -type d -ls >dirlist



답변

-maxdepth깃발을 체크 아웃find

find . -maxdepth 1 -type d -exec ls -ld "{}" \;

여기서 1을 최대 수준 깊이로 사용했습니다. -type d디렉토리 만 찾아서 ls -ld긴 형식으로 내용 을 나열합니다.


답변

의 만들기 사용 find의 옵션

실제로 /bin/ls필요한 exec는 없습니다.

찾기에는 다음과 같은 옵션이 있습니다.

find . -maxdepth 2 -type d -ls

관심있는 하나의 서브 디렉토리 레벨 만 보려면 -mindepth다음과 같은 레벨에 추가하십시오 -maxdepth.

find . -mindepth 2 -maxdepth 2 -type d -ls

출력 형식 사용

표시되는 세부 사항이 달라지면 -printf파일에 대한 세부 사항을 사용자 정의 형식으로 표시 할 수 있습니다. 상징적 권한과 파일의 소유자 이름을 표시하려면 사용 -printf으로 %M하고 %uformat.

나중에 그룹을 포함한 전체 소유권 정보가 필요하다는 것을 알게되었습니다. 사용 %g기호 이름의 형식으로, 또는 %G(또한 같은 그룹 ID에 %U숫자로 된 사용자 ID에 대한)

find . -mindepth 2 -maxdepth 2 -type d -printf '%M %u %g %p\n'

올바른 파일에 필요한 세부 정보 만 제공해야합니다.

사용자와 그룹에 대해 실제로 다른 값을 보여주는 예제를 제공합니다.

$ sudo find /tmp -mindepth 2 -maxdepth 2 -type d -printf '%M %u %g %p\n'
drwx------ www-data  www-data /tmp/user/33
drwx------ octopussy root     /tmp/user/126
drwx------ root      root     /tmp/user/0
drwx------ siegel    root     /tmp/user/1000
drwxrwxrwt root      root     /tmp/systemd-[...].service-HRUQmm/tmp

(가독성을 위해 편집 : 들여 쓰기, 마지막 줄 단축)

성능에 대한 참고 사항

실행 시간은 이러한 종류의 명령과 관련이 없지만 성능 향상은 여기서 지적 할만한 가치가 있습니다.

우리는 각 이름에 대한 새로운 프로세스를 만드는 것뿐만 아니라 엄청난 작업 을 저장할뿐 아니라 find이미 알고있는 것처럼 정보를 읽을 필요조차 없습니다 .


답변

tree -L 2 -u -g -p -d

깊이 2 (-L 2)까지의 예쁜 형식으로 디렉토리 트리를 인쇄합니다. 사용자 (-u) 및 그룹 (-g) 및 권한 (-p)을 인쇄하십시오. 디렉토리 만 인쇄하십시오 (-d). tree에는 다른 유용한 옵션이 많이 있습니다.


답변

내가 정말로 관심이있는 것은 첫 번째 레벨 하위 디렉토리에 대한 소유권 및 권한 정보입니다.

나는 당신의 필요에 완벽하게 맞는 내 물고기를 재생하는 동안 쉬운 해결책을 찾았습니다.

ll `ls`

또는

ls -l $(ls)


답변