특정 파일을 서로 다른 두 위치로 이동[닫기]

특정 파일을 서로 다른 두 위치로 이동[닫기]

유닉스 파일 분리에 관해 질문이 있습니다. 유닉스 디렉토리에 이름은 다르지만 확장자는 같은 파일이 여러 개 있다고 가정합니다. 예를 들어

/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

이것은 예이다

관련 정보