如何将数据集从先前版本目录复制到最新版本目录

如何将数据集从先前版本目录复制到最新版本目录

我已经去了很多目录,名称如下:

/data/db/OX/8_10
/data/db/OX/9_1
/data/db/OX/9_2

并且需要将一些文件(所有文件pt.*)从第二个最新的文件(上图9_1)复制到最新的文件(上图9_2)。

我直接这样尝试过。

cp -p /data/db/OX/9_1/pt.*  /data/db/OX/9_2

但是,不要输入 /data/db/OX/9_1/ & /data/db/OX/9_2。我希望能够写:

cp -p /data/db/OS/"$prior_version"/pt.* /data/db/OS/"$latest_version"/

并从shell 脚本中的目录列表中派生$prior_version和。$latest_version/data/db/OX/

答案1

使用zshshell,您可以执行以下操作:

cd /data/db/OX || exit
latest_two=(<->_<->(N/nOn[1,2])
(($#latest_two == 2)) || exit
cp -p $latest_two[2]/pt.* $latest_two[1]/

POSIXly 假设文件名不包含换行符:

cd /data/db/OX || exit
set -- $(ls -F |
  grep -xE '[0-9]+_[0-9]+/' |
  sort -rnt _ -k 1,1 -k 2,2 |
  head  -n 2)
[ "$#" -eq 2 ] || exit
cp -p "$2"pt.* "$1"

两者都做同样的事情:

  1. 他们得到的目录列表看起来像number_number
  2. 对它们进行反向数字排序(nOn,sort -rn)
  3. 选择前两个
  4. 将文件从第二个复制pt.*到第一个。

相关内容