0

bash を使用すると、/home/user/logs/ のディレクトリがあります。

8 月 2 日 15:34 backup.20120802.tar.gz

8 月 3 日 00:26 backup.20120803.tar.gz

8 月 4 日 00:25 backup.20120804.tar.gz

8 月 15 日 06:39 backup.20120816.tar.gz

これは数日ごとに更新されますが、何か問題が発生した場合に最新のバックアップを自動的に復元したいのですが、bash を使用して最新のものだけを抽出するにはどうすればよいですか?

4

2 に答える 2

1
ls -t1 /home/user/logs/ | head -1

/home/user/logs/ にある最新の変更済みファイルを提供します。したがって、次のことができます。

cd /dir/to/extract
tar -xzf "$(ls -t1 /home/user/logs/ | head -1)"

注:
これは、/home/user/logs/ がフラットで、"*.tar.gz" ファイルしか含まれていないことを前提としています。

于 2012-08-17T08:28:55.470 に答える
0

タイム スタンプが常に信頼できるとは限らない場合は、日付で並べ替えてみてください。

ls -1 /home/user/logs/backup.*.tar.gz | sort -t . -k2rn | head -1

理想的には、 からの出力を解析すべきではありませんlsが、ワイルドカードに一致する通常の名前のファイルしかない場合は、それが最も簡単な解決策かもしれません。sortとにかく、行指向の入力を想定しているため、完全に任意のファイル名の一般的なケースでタスクがより複雑になります。(これは意味をなさないかもしれませんが、Unix に関する限り、ファイル名がbackup.20120816.tar.gz(newline)backup.20380401.tar.gz.

于 2012-08-17T08:46:40.860 に答える