ディレクトリの内容をリアルタイムで表示する組み込みのLinuxコマンドはありますか?


8

リアルタイムでディレクトリの内容を表示する組み込みのLinuxコマンドはありますか?リアルタイムでファイルの内容を表示する「tail -f file_name」コマンドと同様です。


4
どうですかwatch -n1 ls
ジョー


4
組み込みではありませんが、inotifytoolsパッケージはLinuxのinotify機能を使用して、ファイル作成イベントが発生するのを監視できます。
chepner 14

回答:


6

これはを使用して行うことができますwatch。それは完全にリアルタイムではありませんが、十分に近い(最大で1/10秒):

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 2014

@ jm666 - watch tail lsあるいはwatch head ls正しいと最新のファイルが表示されますlsのようなオプション、注文-lt-ltr尾を
AFH 2014

@ jm666-もちろん、文字どおりに解釈するのはナンセンスです。私はこれを省略形として使用していましたwatch {options} 'ls {options} | tail {options}'
AFH

@ jm666:リクエストは、tail -fファイルへの変更に続くディレクトリへの変更に従うコマンドに対するものでした。あなたの最初のコマンドは、それwatchがうまくいかないことでした。実行するコマンドが適切に作成されていれば、そうなると思います。sh -cより複雑なコマンドをラップするために使用する必要がある場合があります。私はinotify-toolsを簡単に調べましたが、ディレクトリに適用されたイベントだけでなく、ディレクトリへの変更を表示するコマンドも見つかりませんでした。
garyjohn 2014

2

私はこれを書いた、私はこれがあなたが必要なものであることを願っています。はありませんがbuilt-in Linux command、ほとんどのUNIXボックスに存在する一般的なプログラムのみを使用します。

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一部のLinuxマシンで毎回スクリプトがすべてを新しいものとして表示するループを行った後に価値が失われるバグを発見
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.