0

タイムスタンプ付きのバックアップ ファイルをバックアップ ディレクトリに保存する展開スクリプトを作成しています。最新のファイルにロールバックするロールバックの実装をしたいと思います。

私のバックアップディレクトリ:

$:ls

.              1341094065_public_html_bu  1341094788_public_html_bu
..             1341094390_public_html_bu
1341093920_public_html_bu  1341094555_public_html_bu

バックアップ ディレクトリ内の最新のファイルを (ファイル名のタイムスタンプで) 識別し、その名前を変数に保存し、それを ../public_html などに cp したい...

4

4 に答える 4

2

ls -tファイルを mtime でソートします。 ls -t | head -n1最新のファイルを選択します。これは、あなたが持っている命名スキームとは無関係であり、プラスである場合とそうでない場合があります。

于 2012-06-30T22:38:14.943 に答える
2

...そして、ファイル名に改行が含まれていても壊れず、一致するファイルがない場合でも壊れない、より「正しい」方法 (展開されていないグロブ結果)

for newestfile in ./* ; do : ; done
if test -e "$newestfile"; then do something with "$newestfile" ; fi
于 2012-07-01T00:20:31.247 に答える
1

最新のタイムスタンプが付けられたファイル名は、アルファベット順に最後に並べ替える必要があります。tail -n1したがって、それを抽出するために使用できます。

于 2012-06-30T22:36:34.450 に答える
0

名前に改行がないファイルの場合:

shopt -s nullglob
printf '%s\n' "$buDir"/* | tail -n 1
于 2012-06-30T23:52:21.387 に答える