이전 버전 디렉터리의 데이터 세트를 최신 버전 디렉터리로 복사하는 방법 [닫기]

이전 버전 디렉터리의 데이터 세트를 최신 버전 디렉터리로 복사하는 방법 [닫기]

나는 다음과 같은 이름을 가진 많은 디렉토리를 방문했습니다.

/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"/

그리고 쉘 스크립트의 디렉토리 목록에서 및 를 파생시킵니다 $prior_version.$latest_version/data/db/OX/

답변1

zsh셸을 사용하면 다음을 수행할 수 있습니다.

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.*첫 번째 파일로 복사합니다.

관련 정보