Bashでコマンドを実行する場合、そのコマンドを実行してどのファイルとディレクトリが変更されたかを確認する方法はありますか?
たとえば、次のように実行すると:
export $MYDIR="/home/users/myuser/"
touch $MY_DIR/*
修正されたファイルを一覧表示したいです。
/home/users/myuser/file1
/home/users/myuser/file2
/home/users/myuser/file3
しかし、具体的にはそうではありませんtouch
。私は解決策が一般的であることを願っています。どの注文する。
可能ですか?
答え1
このユースケースでは、私が本当に好きないくつかのツールがあります。
maybe
コマンドを実行しますが、ファイルシステムに対する修正を偽にし(実行せずに成功したふりをし、履歴)、すべての変更のリストを表示してから、コマンドを再実行するかどうかを決定できます。完璧ではありません。質問リストしかし、多くの場合に十分です。- ロギングファイルシステムファイルシステムに対するすべての変更を通過することを許可しますが、設定可能な方法で記録するジャーナルファイルシステムのオーバーライドを提供します(参照:LoggedFS 構成ファイルの構文詳細はこちら)。
ファイルシステムの操作を追跡するためによく使用されるその他のツールには、次のものがinotifywait
ありますauditd
。Linuxファイルアクセスの監視もっと学ぶ。
答え2
基本/簡単なソリューションの場合は、まずファイルを作成してから、作業後にaを実行してfind
そのファイルより最新のファイルを表示しますか?
touch /tmp/myfile
( do stuff )
find ${MY_DIR} -newer /tmp/myfile
@roaimaが指摘したように、これは「結果的に変更されたファイルとディレクトリ」の要件のみを解決し、削除されたファイルは識別しません。