이것이 내 상황입니다. 로컬로 3개의 디렉터리에 많은 파일이 있습니다. 나는 이 파일들의 하위 집합 + 서버에 ~30개 이상의 디렉터리 10개를 구성했습니다. 서버의 디렉터리와 일치하도록 로컬 컴퓨터의 파일을 이동하고 싶습니다. 동시에 약 30개의 추가 파일을 복사하는 것이 이상적이지만 그렇지 않은 경우 수동으로 수행할 수 있습니다. 누구든지 이것을 달성하는 방법에 대한 제안이 있습니까?
자, 예를 들어보겠습니다. 내 로컬 파일은 3개의 디렉토리로 나뉩니다: [ AB .... F ] [ GH ... P ] [ QR .... W ]
내 서버에는 [ABC][DEF][GHIJK][LMNOP][QR][STU][VWXYZ]가 있습니다.
로컬 파일을 서버 위치에 따라 해당 로컬 디렉터리로 이동하고 싶습니다(파일을 전송하지 않고). []는 디렉터리이고 문자는 파일입니다.
답변1
파일간 중복된 이름이 없는 경우
- 서버에서 파일 목록(일반적
find
으로 공용 디렉터리를 기준으로 한 출력)을 가져와 로컬로 전송합니다. - 로컬에서는 모든 파일을 동일한 디렉터리로 이동합니다(다음을 사용).
find [...] -exec mv -t some/staging/directory {} \;
로컬에서는 CWD를 공용 디렉터리로 사용하고 다음 명령을 실행합니다.
while read f; do mkdir -p $(dirname "$f") mv -v "some/staging/directory/$(basename $f)" "$f" done < files_on_server.lst