最新のファイルタイムスタンプを使用したディレクトリの作成

最新のファイルタイムスタンプを使用したディレクトリの作成

ディレクトリ内の最新のファイルの2つのタイムスタンプに基づいてディレクトリを作成し、その2つのファイルを新しく作成されたディレクトリにコピーしようとしています。たとえば、

-rw-r--r-- 1 root root 0 Sep 24 12:01 a

-rw-r--r-- 1 root root 0 Sep 24 12:01 b

というディレクトリを作成し、現在のディレクトリの最新ファイルであるそのディレクトリに20190924コピーしたいと思います。ab

ベストアンサー1

このzshスクリプトは、現在のディレクトリから2つの最新の(一般的な)ファイルを選択し、最新のファイルの修正タイムスタンプを収集し、そのタイムスタンプをYYYYmmdd形式に変換し、ディレクトリを作成してから、2つの最新ファイルをディレクトリにコピーします。

#!/bin/zsh

newest2=( *(.om[1,2]) )
dsec=$( stat -c %Y "${newest2[1]}" )
dnam=$( date -d @"$dsec" +%Y%m%d )
mkdir "$dnam"
cp -- "${newest2[@]}" "$dnam"

最初の行では、修飾子(括弧内)を使用してワイルドカードを拡張して割り当てますnewest2*資格要件:

  • .--純粋なファイル
  • om- 修正時間に基づいて並べ替え(最新の項目から古い項目の順に)
  • [1,2]- 1から2までの要素のみを含むようにリストを分割します。

stat次に、最新のファイルの修正時間(秒単位)を要求します。この日付は、date私たちが望む形式でディレクトリ名を返すGNUに渡されます。ディレクトリを作成した後、このcpコマンドは両方のファイルをディレクトリにコピーします。

おすすめ記事