특정 파일 형식만 찾아 드라이브를 크롤링하고 어딘가에 저장하는 명령줄 cp 또는 rsync가 있습니까?

특정 파일 형식만 찾아 드라이브를 크롤링하고 어딘가에 저장하는 명령줄 cp 또는 rsync가 있습니까?

이미지/비디오 파일만 찾는 하드 드라이브를 크롤링하기 위해 cp또는 명령 과 같은 것을 명령줄에서만 사용할 수 있습니까 ? rsync그리고 새 위치의 폴더 이름/경로를 유지하면서 다른 위치로 복사하는 중일까요?

나는 내가 가지고 있는 사진과 비디오를 백업하고 싶은 오래된 하드 드라이브가 두 개 있지만 기껏해야 수천 개의 폴더에 흩어져 있기 때문에 컴퓨터가 나를 위해 대부분의 힘든 작업을 수행하는 것을 선호합니다. 모두 가능합니다. 하지만 저는 여전히 명령줄과 그 인상적인 기능에 대해 배우고 있습니다.

답변1

find다음과 같이 관심 있는 파일을 찾는 데 사용할 수 있습니다 .

find /mnt/hd1 -name \*.jpg

/mnt/hd1 디렉토리에서 jpg 파일(확장자가 .jpg인 파일)을 찾습니다. 해당 파일을 어딘가에 복사하려면 다음을 수행할 수 있습니다.

find /mnt/hd1 -name \*.jpg -exec cp {} /mnt/dest

cp그러면 /mnt/dest 디렉토리에서 찾을 수 있는 모든 파일에 대해 명령이 실행됩니다 .

도움이 되길 바랍니다 :)

답변2

또 다른 가능성은 하나의 스크립트로 자동화하고 싶지 않은 경우 find 명령을 사용하여 bash 스크립트를 만드는 것입니다. 그런 다음 bash 스크립트를 실행하십시오. 이렇게 하면 파일의 출처도 알 수 있습니다.

또한 귀하의 환경에서 중복된 파일 이름이 있다고 의심되는 경우를 대비하여 위의 내용을 약간 변경하겠습니다. 스크립트에서 오류 검사가 필요합니다.

또한 디렉터리 경로를 보존하시겠습니까?

즉, 파일이 여기에 있는 경우

/source/a/b/c/d/e.jpg

다음으로 복사하시겠습니까?

/dest/a/b/c/d/e.jpg ?

또는

/dest/e.jpg ?

예를 들면 다음과 같습니다.

find /source -type f -name "*.jpg" -print | awk '{"cp -p "$1" /backup/}' > copy.sh

이것은 하나의 디렉토리 /backup에만 복사됩니다.

보존하려면 할 수 있습니다

(cd /source; find . -type f -name "*.jpg" -print | awk '{"cp -p "$1" /backup/"$1}') > copy.sh

하지만 먼저 모든 디렉터리를 만들고 싶을 것입니다.

(cd /source; find . -type d -print | awk '{print "mkdir -p /backup/"$1}' > mkdir.sh

이렇게 하면 실제로 명령을 실행하기 전에 스크립트를 눈으로 확인하고 모든 것이 잘 보이는지 확인할 수도 있습니다. 나는 ...erm...예기치 않은 결과로 명령을 실행하면서 꽤 여러 번 화상을 입었습니다. :)

게다가 스크립트가 있으면 앞으로 수행할 작업에 대한 기록도 제공됩니다.

관련 정보