리눅스에서 파일을 검색 할 때 어떤 종류의 진행 정보를 표시 할 수있는 방법이 있는지 궁금합니다 find
. 나는 종종 그렇게 모든 스크립트가 있습니다. 자신이 큰 디스크에 파일을 검색하고 진행 표시기 어떤 종류의 바처럼, 매우 도움이 될 것입니다 또는 적어도 현재 디렉토리에서 검색을 "발견"찾거나 않는 find
일부 후크 지원 ?
리눅스에서 파일을 검색 할 때 어떤 종류의 진행 정보를 표시 할 수있는 방법이 있는지 궁금합니다 find
. 나는 종종 그렇게 모든 스크립트가 있습니다. 자신이 큰 디스크에 파일을 검색하고 진행 표시기 어떤 종류의 바처럼, 매우 도움이 될 것입니다 또는 적어도 현재 디렉토리에서 검색을 "발견"찾거나 않는 find
일부 후크 지원 ?
답변:
이 트릭으로 현재 폴더를 볼 수 있지만 진행률 표시 줄은 없습니다-죄송합니다.
watch readlink -f /proc/$(pidof find)/cwd
pv (파이프 뷰어) 라는 작은 유틸리티 가 도움이 될 수 있습니다. Peteris Krumins 의 환상적인 요약 에서 :
파이프 뷰어는 파이프 라인을 통한 데이터 진행을 모니터링하기위한 터미널 기반 도구입니다.
pv는 여러 가지 방법으로 사용할 수 있습니다. 여기에서 놀 때, 나는 파이프에 의해 즉시 찾기로 생성 된 출력의 진행 상황을 모니터링하기 위해 넣었습니다 (stdin을 stdout에 건드리지 않아야합니다)
find / -mtime -1h | pv > /dev/null
다음과 같이 출력이 약간 표시됩니다.
6.42MB 0:01:25 [31.7kB/s] [ <=> ]
(나는 stdout을 / dev / null로 리디렉션하여 출력이 날지 않고 진행률 표시 줄이 실제로 작동하는 것을 볼 수 있습니다. 이것은 찾기 의도가 아니므로 그에 따라 조정하십시오)
나는 이것이 야생에서 얼마나 잘 작동하는지 확실하지 않습니다. 위의 것과 같은 "비싼"찾기 (루트에서 트래버스)는 상당히 잘 작동하는 것으로 보입니다. 디렉토리 트리의 더 깊은 노드에서 더 간단한 명령을 위해 pv가 비참하게 실패했습니다. 이러한 명령은 결과를 즉시 반환하므로 진행률 표시 줄이 여기에있을 수 있습니다.
어쨌든, 놀아서 이것이 필요한 것에서 전혀 효과가 있는지 확인하십시오. 적어도 생각을위한 음식.
find
없으며, pv
그들이 비율을 계산할 수 있습니다 ,, 검색이 얼마나 걸릴지 알 수 없다. pv
출력 에서 볼 수있는 것은 검색이 시작된 이후의 시간입니다.
yes | pv > /dev/null
관찰
오늘 이것을 검색하고 Google을 통해 여기에 도착했습니다. OS X에서 오래 실행되는 찾기가 있었으며 분명히 watch
존재하지 않습니다. 여기 또 다른 해결책이 있습니다.
lsof -Fn -a -c find -d cwd +r 10
lsof
= 열린 파일 목록-Fn
= 파일 / 디렉토리 이름 만 표시 ( 'n'문자로 시작), 전체 lsof
출력 을 선호하는 경우 생략하십시오.-a
= 말 lsof
에만 선이 일치 보여 모두 (이 일치하는 라인을 보여줍니다 기본적으로 기준을 어떤 기준)-c find
= 이름이 지정된 프로세스에 의해 열린 파일 / 디렉토리 표시 find
(실제로 이름이로 시작하는 프로세스 find
이지만 대소 문자를 구분하므로 Finder
표시되지 않음)-d cwd
= FD (filedescriptor) cwd (현재 작업 디렉토리)가있는 행 표시+r 10
= 열려있는 파일을 찾을 수 없을 때까지 10 초마다 출력 표시 (찾기 완료)디렉토리 find
가 10 초마다 처리되고 있음을 보여 주므로 find
여전히 작동하는지와 얼마나 진행되었는지 알 수 있습니다.
find
in 의 병렬 검색의 예가 있습니다 man find
. 이를 사용하여 모든 항목에 대해 여러 가지 검사를 수행하고 작동하는 조건에 따라 여러 가지 작업을 수행 할 수 있습니다. 첫 번째 검사는 예를 들어 simple -print
일 수 있으므로 모든 이름이 stdout으로 인쇄됩니다. 두 번째 확인은 원하는 것을 수행합니다. 다음과 같은 것 :
find /work \( -fprint /dev/stderr \) , \( -name 'core' -exec rm {} \; \)
두 번째 검사에서 파일 이름도 표시해야하는 경우을 사용하여 파일 이름 중 하나를 stderr로 리디렉션 할 수 있습니다 -fprint /dev/stderr
.
이것은 find 에 의해 열린 현재 파일의 목록 이므로 찾기 가 '지금'보이는 것과 동일 합니다.
find는 매 초마다 find가 사용하는 파일 설명의 쿼리 주소로 가벼우 며 find 자체를 방해하지 않습니다 . 또한 원하는 모든 프로그램으로 수행 할 수 있습니다.
# watch -n 1 'ls -l /proc/$(pidof find)/fd | cut -d ">" -f 2 | grep -v /dev/'
는 grep -v /dev/
숨기기 수신 및 콘솔에 데이터를 인쇄하는 데 사용되는 파일입니다 STDOUT, STDIN 및 STDERR를 파일이다.