나는 다음과 같은 이름을 가진 많은 디렉토리를 방문했습니다.
/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"
둘 다 동일한 작업을 수행합니다.
- 그들이 얻는 디렉토리 목록은 다음과 같습니다.
number_number
- 숫자를 역순으로 정렬합니다(nOn, sort -rn).
- 처음 두 개를 선택하세요.
- 두 번째 파일을
pt.*
첫 번째 파일로 복사합니다.