단일 명령을 사용하여 여러 디렉터리를 하나로 복사할 수 있나요?

단일 명령을 사용하여 여러 디렉터리를 하나로 복사할 수 있나요?

저는 photorec을 사용하여 하드 드라이브에서 데이터를 복구했으며 이제 홈 디렉토리에서 귀중한 공간을 /home/ray/recup_dir.1차지하는 많은 디렉토리가 있습니다./home/ray/recup-dir.598

다른 디렉토리에 복사하고 싶어요/media/ray/"Seagate Expansion Drive"/RecupsA

하나의 명령을 사용하여 이 작업을 어떻게 수행할 수 있습니까?

답변1

내 마음에 떠오른 첫 번째 솔루션은 rsync였습니다. 모든 것을 배제하십시오. 패턴과 일치하는 디렉터리를 포함합니다. rsync를 사용하여 동일한 호스트에 정보를 복사하는 것이 이상하다는 것을 인정합니다. 일반적으로 원격 컴퓨터에 복사하는 데 사용됩니다. 하지만 localhost에 복사할 수 없는 이유는 없습니다.

rsync -ravz --include '/home/ray/recup_dir.*' --exclude '*' user@localhost

ravz의 설명:

-r recursive copy
-v verbose
-a : archive mode. Preserves symbolic links, file permissions, user & group ownerships,  timestamps
-z : compress file data


두 번째 옵션은 속임수를 쓰고 mc. 이게 시작될 거야자정 사령관를 사용하면 여러 디렉터리를 선택한 다음 복사할 수 있습니다.


세 번째 옵션: 찾기.

find /home/ray/recup_dir.\*  -exec cp {} /media/ray/"Seagate Expansion Drive"/RecupsA \;


네 번째 옵션: 셸을 사용합니다. /home/ray/로 이동한 다음

for a in recup* ; do cp -r $a /media/ray/"Seagate Expansion Drive"/RecupsA; done

답변2

재귀 옵션 cp과 함께 표준을 사용하십시오 .r

cp -r /home/ray/recup_dir.{1..598} "/media/ray/Seagate Expansion Drive/RecupsA"

하지만 이 경우에는 이동하는 것이 더 좋을 것 같습니다.

mv /home/ray/recup_dir.{1..598} "/media/ray/Seagate Expansion Drive/RecupsA"

이 두 명령은 마지막 매개변수만 다음과 같이 처리합니다.목적지및 이전의 모든원천(파일 또는 디렉터리).

관련 정보