次のコマンドを使用して、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