여러 폴더에서 패턴이 있는 최신 파일을 찾아 다른 서버로 이동해야 함

여러 폴더에서 패턴이 있는 최신 파일을 찾아 다른 서버로 이동해야 함

서버에 1-10번 폴더가 여러 개 있습니다. 각 폴더에는 여러 개의 파일이 있습니다. 다음과 같은 스키마 이름을 가진 최신 파일을 찾아야 합니다.

  • 파일 1: NA_UW_CLUSTER_RESULTS_210916.zip
  • 파일 2: UW_CLUSTER_RESULTS_210916.zip

"파일 2"를 선택하고 1-10번의 해당 폴더가 여러 개 있는 다른 서버에 복사해야 합니다.

UW_CLUSTER_RESULTS_210916.zip따라서 서버 "A"의 "Folder 1"에서 일치하는 패턴을 가진 최신 파일()을 서버 "B"의 "Folder 1"로 복사 해야 합니다 .

답변1

아마도 이것은 귀하의 사용 사례에 충분할 것입니다.

ls -1 -td /dir1/prefix1* /dir2/prefix2* | head -n 1

또는 더 강력하게:

find /dir1 /dir2 -type f \( -path "*dir1/prefix1*" -o -path "*dir2/prefix2*" \) -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "

답변2

그리고 zsh:

set -o extendedglob

for folder ('folder '<->(n/))
  scp $folder/*CLUSTER_RESULTS_[0-9](#c6).zip(om[1]) B:$folder/

일부 zsh 고급 glob 연산자를 사용합니다.

  • <->, 이는 <5-20>숫자와 일치하는 연산자이지만 여기에는 제한이 없으므로 모든 십진수와 일치할 수 있습니다.
  • [0-9]: zsh에서 0123456789 문자만 일치합니다(다른 쉘이 일반적으로 일치하는 수백 문자 대신).
  • (#c6): 확장 정규 표현식과 유사합니다 {6}. : 처음 6개 항목과 일치하므로 여기에 숫자가 있습니다(필수 extendedglob).
  • (om[1]): 이 부분은 전역 한정자입니다. om수정 시간을 기준으로 o정렬 m(최신순) 하고 [1]첫 번째 항목을 선택하세요. 폴더 glob은 또한 nglob 결과를 숫자로 정렬하는 glob 한정자를 사용합니다 (따라서 와 사이가 아닌 folder 10후처리 후 ). 디렉토리 유형 파일로 제한됩니다.folder 9folder 1folder 2/

관련 정보