유닉스 파일 분리에 관해 질문이 있습니다. 유닉스 디렉토리에 이름은 다르지만 확장자는 같은 파일이 여러 개 있다고 가정합니다. 예를 들어
/dir/AB_123yuu.pdf
/dir/SD_234ggj.pdf
/dir/AB_123jlhj.pdf
/dir/DE_373hhj.pdf
etc...
이제 요구 사항은 이름으로 시작하는 모든 파일을 복사 AB_123
하고 server1
나머지 파일도 복사하는 것입니다.server2
답변1
bash
확장된 glob 메커니즘을 사용하는 경우 :
shopt -s extglob
cp ABC_123* /server1/
cp !(ABC_123*) /server2/
이건 !(pattern)
다 어울리는데와는 별개로주어진 패턴.
zsh
이런 식으로 될 것 입니다
setopt extendedglob
cp AB_123* /server1/
cp *~AB_123* /server2/
훨씬 더 간단하다
cp ^AB_123* /server2/
답변2
이 extglob
옵션을 사용하고rsync
shopt -s extglob
rsync -a AB_123* server1:/home/foo/files &
rsync -a !(AB_123*) server2:/home/foo/files &
자세한 내용은 이 질문을 참조하세요.
답변3
두 개의 배열 생성
AR1: AB_123*.pdf 정규식 일치 파일의 경우
AR2: AB_123 접두사 없이 확장자가 *.pdf인 파일에 적용 가능
두 개의 find 명령으로 채우고 scp를 사용하여 파일을 원격 서버에 복사합니다.
AR1=()
AR2=()
for file in $(find /path -name AB_123*.pdf); do AR1+=($file); done
for file in $(find . -name *.pdf | grep -v /AB_123); do AR2+=($file); done
scp ${AR1[*]} username@server1:/remote/path
scp ${AR2[*]} username@server2:/remote/path
이것은 예이다