ディレクトリ内の最新のファイルの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
コピーしたいと思います。a
b
ベストアンサー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
コマンドは両方のファイルをディレクトリにコピーします。