디렉토리의 내용을 실시간으로 표시하는 내장 Linux 명령이 있습니까?


8

디렉토리의 내용을 실시간으로 표시하는 내장 Linux 명령이 있습니까? 파일의 내용을 실시간으로 표시하는 "tail -f file_name"명령과 유사합니다.


4
어때요watch -n1 ls
Joe

watch ( linfo.org/watch.html ) 살펴보기
David Segonds

4
기본 제공 기능은 아니지만 inotifytools패키지는 Linux inotify기능을 사용하여 파일 생성 이벤트가 발생할 때이를 감시 할 수 있습니다.
chepner

답변:


6

을 사용하여이 작업을 수행 할 수 있습니다 watch. 완전히 실시간은 아니지만 충분히 근접합니다 (최대 10 분의 1 초).

watch -n0.1 ls

매뉴얼에서 :

-n, --interval seconds
          Specify update interval.  The command will not allow quicker than 0.1 second interval, in which the smaller values are converted.

1
새 파일을 더 명확하게 ls -lt보려면 목록 맨 위에 ls -ltr새 파일을 보거나 맨 아래에 새 파일을보십시오. 그런 다음 새 파일 watch -d을 강조 표시 하려면 을 사용 하여 최신 업데이트 watch --differences=cumulative의 변경 사항을 강조 표시 하거나 watch시작된 이후의 모든 변경 사항을 강조 표시하십시오 .
garyjohn

@ jm666 - watch tail ls또는 watch head ls올바른와 최신 파일이 표시됩니다 LS 와 같은 옵션, 주문 -lt머리 또는 -ltr꼬리 .
AFH

@ jm666-물론 말 그대로 받아들이면 말이되지 않습니다 : 나는 이것을 속 기어로 사용했습니다watch {options} 'ls {options} | tail {options}'
AFH

@ jm666 : tail -f파일 변경과 같이 디렉토리 변경을 따르는 명령을 요청했습니다 . 원래 명령은 watch그렇게 잘하지 못했습니다. 나는 그것이 실행되는 명령이 적절하게 만들어진다면 그렇게 할 것이라고 생각합니다. 때로는 sh -c더 복잡한 명령을 감쌀 때 사용해야 합니다. 나는 inotify-tools를 간단히 살펴 보았고 디렉토리에 적용된 이벤트뿐만 아니라 디렉토리의 변경 사항을 보여주는 명령을 보지 못했습니다.
garyjohn

2

나는 이것을 썼다. 이것이 당신이 필요한 것이기를 바란다. 아니에요built-in Linux command , 그러나 그것은 단지 일반적인 프로그램은 대부분의 유닉스 박스에서 제공합니다.

sleep필요에 따라 시간을 조정하십시오 . 최소 2 초의 값을 사용합니다. cmd="ls"비재 귀적 구조 또는 cmd="find DIRNAME"재귀 적 검색에 사용 합니다 . 마지막 경우 DIRNAME/모든 파일과 디렉토리에 접두사를 붙입니다.

 echo "" | awk '{while ( 1 ) {cmd="find ."; delete b;c=0; while ( ( cmd | getline result ) > 0 ) {test=1;c++;n=0;for (i in a) {n++;if (a[i]==result) {b[c]=i; test=0; break;}} if (test) {n++;a[n]=result;b[c]=n;print "##NEW## "result }} close (cmd); for (i in a) {test=1;for (j in b) {if (b[j]==i) {test=0;break}} if (test) {print "##DELETED## "a[i]; delete a[i]}} system("sleep 5") } }'

i일부 리눅스 머신에서 매번 스크립트가 모든 것을 새로운 것으로 보이게하는 루프를 수행 한 후 가치를 잃은 버그를 발견했습니다
NuTTyX

1

내가 알고 난 후에는 너무 간단합니다.

watch -d dir_name

0

inotifytools및 해당 명령 줄 유틸리티를 사용할 수 있습니다 .

inotify디렉토리를 모니터 하는 데 사용할 수 있으며 디렉토리 자체 및 디렉토리 내의 파일에 대한 이벤트를 리턴합니다.

사용할 수있는 다른 도구는 inotifywatch다음과 같습니다.

sudo inotifywatch -v -r /foo

-r모든 하위 디렉토리를 재귀 적으로 볼 수 있도록 추가 할 수 있습니다 . 그러나이 솔루션 은 새로 작성된 파일의 변경 사항을 감지하지 않습니다 .

따라서 다른 해결책은 다음을 사용하는 것입니다 inotifywait.

inotifywait -m --format "%f" /foo

새로 만든 모든 test*파일의 내용을 보여주는 또 다른 예는 다음과 같습니다 /tmp.

inotifywait -m --format "%f" /tmp | grep --line-buffered ^test | xargs -L1 -I% sudo cat /tmp/% 2> /dev/null
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.