리눅스에서 재귀 파일 목록의 깊이를 제한하는 방법이 있습니까?
현재 사용중인 명령은 다음과 같습니다.
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
하고 %u
에 format
.
나중에 그룹을 포함한 전체 소유권 정보가 필요하다는 것을 알게되었습니다. 사용 %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)