여러 열거형 파일을 재동기화하는 방법

여러 열거형 파일을 재동기화하는 방법

data_1.mat, data_2.mat, ..., data_n.mat 파일이 있다고 가정합니다. 한 줄의 코드로 이러한 파일을 다른 폴더에 어떻게 동기화할 수 있나요?

내가 아는 유일한 방법은 for 루프에서 이 작업을 수행하는 것입니다.

for i in 1..n
do 
rsync 'data_$i' \dest\ 
done

서버에서 데이터를 전송하는 경우 for 루프에서 매번 새 SSH를 설정해야 하므로 편리하지 않습니다.

답변1

쉘 와일드카드를 사용하여 관련 파일 세트를 일치시킬 수 있습니다.

cp -p data_*.mat /dest/

주장하면 작동 rsync하지만 설명에 따르면 사용하기에 잘못된 도구일 수 있습니다.

rsync -a data_*.mat /dest/

두 경우 모두 쉘(명령 아님)은 data_*.mat일치하는 모든 파일/디렉토리 목록으로 확장되거나 일치하는 항목이 없으면 변경되지 않은 상태로 유지됩니다. ( *와일드카드는 0개 이상의 문자와 일치하며 ?정확히 한 문자와 일치합니다.)

가능한 일치 항목의 하위 집합 인 경우 1..n조금 더 어렵지만 많이는 아닙니다. 일부 쉘( 포함 bash)은 고정된 범위 내에서 버팀대 확장을 허용합니다 {1..27}. 이것을 패턴에 연결하면 또 다른 해결책이 있습니다.

cp -p data_{1..27}.mat /dest/

echo와일드카드 패턴을 사용할 때 이를 확장하는 것은 셸이므로 무슨 일이 일어날지 확인하기 위해 명령 에 넣지 못할 이유가 없습니다 .

echo data_?.mat
echo rsync -a data_*.mat /dest/
echo cp -p data_{1..27}.mat /dest/

답변2

다음과 같은 명령을 사용하여 필요한 모든 파일 목록을 미리 생성할 수 있습니다.

seq -f "data_%.0f.mat" 1 11

그러면 다음이 생성됩니다.

data_1.mat
data_2.mat
data_3.mat
    ...
data_11.mat

그런 다음 사용할 수 있습니다

rsync –files-from=/path/of/file/with/above_list .....

관련 정보