재귀 파일 목록의 깊이를 제한하는 방법은 무엇입니까?
리눅스에서 재귀 파일 목록의 깊이를 제한하는 방법이 있습니까?
현재 사용 중인 명령어는 다음과 같습니다.
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
필요함;
찾기 옵션은 다음과 같습니다.
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)합니다. 트리에는 다른 유용한 옵션이 많이 있습니다.
제가 관심 있는 것은 첫 번째 수준의 하위 디렉터리에 대한 소유권 및 권한 정보입니다.
나는 내 물고기를 놀다가 쉬운 해결책을 찾았고, 그것은 당신의 요구에 완벽하게 들어맞았습니다.
ll `ls`
또는
ls -l $(ls)
언급URL : https://stackoverflow.com/questions/4509624/how-to-limit-depth-for-recursive-file-list
'programing' 카테고리의 다른 글
로그인에서 요청한 데이터베이스 "테스트"를 열 수 없습니다.로그인에 실패했습니다.사용자 'xyz\'에 대한 로그인 실패ASPNET' (0) | 2023.04.26 |
---|---|
셀(1,1) = 500 * 100은 오버플로를 유발하지만 50000 * 100은 오버플로를 유발하지 않는 이유는 무엇입니까? (0) | 2023.04.26 |
WPF: 사용자가 드래그한 후 트리거하는 이벤트가 있는 슬라이더 (0) | 2023.04.26 |
ng server는 파일 변경을 자동으로 감지하지 않습니다. (0) | 2023.04.26 |
.NET / C# - char[]를 문자열로 변환 (0) | 2023.04.26 |