スクリプトの出力でファイルのリストを取得しますか?

スクリプトの出力でファイルのリストを取得しますか?

複数のjarを実行して異なるディレクトリに異なるファイルを作成するシェルスクリプトを実行しています。

最後に、スクリプトを実行したときの出力としてディレクトリに生成されたファイルのリストを取得したいと思います。

私のファイルの名前はですdate_time_ABC.txt。日付別にファイル名を取得したいが、特定の日付に複数回実行できるため、前の実行で生成されたファイルを含むすべてのファイルをインポートします。

シェルスクリプトを実行した後に生成されたファイルのリストを取得する方法はありますか?提案してください。

答え1

もしあなたの時間含まれていない第二ls、次のオプションを使用できます-u

-uと-lt:アクセス時間に基づいてソートして表示します。 -l を使用すると、アクセス時間が表示され、名前に基づいてソートされます。それ以外の場合は、アクセス時間に基づいてソートします。

それ以外の場合は、現在のファイルを一覧表示し、ls -u -1>../Beforeコードの後に​​再度実行すると、次のように操作が完了しますls -u -1 > ../Aftercomm -3 ../After ../Before

答え2

ただ考えです。 2つのディレクトリを維持してください。最初のディレクトリにはスクリプトに関連付けられているファイル(作業ディレクトリ)が含まれ、2番目のディレクトリには同期ファイル(ミラーディレクトリ)が含まれています。スクリプト同期コマンドの最初の行に入力します。

rsync -xrlptgoEvv /home/user/work/ /home/user/mirror/

そして、スクリプトコマンドの最後にディレクトリ間の違いを検出し、work出力mirrorをプレーンテキストファイルにリダイレクトします。

diff -rq /home/user/work/ /home/user/mirror/ > /home/user/list-of-files.txt

diffなどを使用してコマンド出力をフィルタリングして、必要なデータ型を取得することもできますsedawkまた、最後の同期以降にディレクトリから削除されたファイルをディレクトリから削除するオプションも検討してください--deletersyncmirrorwork

直す。より良いアプローチは、スクリプトの上にファイルのリストを作成することです。

ls -la /home/user/work/ > /home/user/list-of-files.txt

そして、スクリプトの下部で新しいファイルのリストを前のリストに追加し、それをソートした後、新しいファイルを表す一意の行だけをフィルタリングします。

ls -la /home/user/work/ >> /home/user/list-of-files.txt
cat /home/user/list-of-files.txt | sort | uniq -u > /home/user/list-of-new-files.txt

関連情報