ファイルを将来のタイムスタンプでタッチします。

ファイルを将来のタイムスタンプでタッチします。

次のコマンドを使用して、30分前にファイルを生成しました。

TZ=ZZZ0 touch -t "$(TZ=ZZZ0:30 date +%Y%m%d%H%M.%S)" $HOME/reference

同様に、30分後にファイルを生成するにはどうすればよいですか?

例:午後5時午後5時30分にファイルをタッチしたいと思います。

答え1

マイナス記号を追加するだけです。

TZ=ZZZ0 touch -t "$(TZ=ZZZ-0:30 date +%Y%m%d%H%M.%S)" $HOME/reference

または、タイムゾーンのトリックを裏返します。

TZ=ZZZ0:30 touch -t "$(TZ=ZZZ0 date +%Y%m%d%H%M.%S)" $HOME/reference

タイムゾーンオフセット以上を実行する必要がある場合、標準シェルユーティリティは日付を操作する方法が不足しているため悪名高いです。多くの人がBourneシェルで日付計算を実装することを行っているので、1つのオプションはそのうちの1つをダウンロードすることです(ここにいくつかリストされています)。Unixシェルスクリプトの日付操作)。もう一つのオプションはインストールすることですGNUコアツール、特にdate注文するこれにより組版することができます。次の日付now + 30 minutes。 Perlなどのより洗練されたスクリプト環境をインストールし、日付操作ライブラリを使用することもできます。

答え2

次のコマンドを使用します。

touch -t "$( printf '%(%Y%m%d%H%M.%S)T\n' 'now +30 minutes' )" file

を使用すると、-t日付touchを指定できます。 printfを使用してksh日付をフォーマットすることもできます。使用するには、%(date-format)Tマニュアルページを参照してくださいksh

答え3

touchこの問題に直面したGNU巡礼者のために:

-dパラメータを使用することもできますtouch

touch -d "now +30 minutes" $HOME/reference

関連情報