2014-03-06 2 views
0

수백 개의 영화를 포함하여 백업 된 데이터로 가득 찬 2TB 하드 드라이브가 있으며 대부분이 순차적 백업으로 인해 여러 번 복사되었습니다 같은 HD의. 하드 드라이브는 백업 폴더의 목록으로 구성되며 모든 백업에는 백업시 내 랩톱 HD에 있던 모든 영화가있는 영화 폴더가 있습니다.디렉토리를 검색하고 파일을 새 디렉토리로 이동하여 모든 디렉토리를 삭제하는 Bash 스크립트

새 영화 폴더를 만들고 모든 영화를 새 "영화"하위 폴더로 이동하고 동일한 영화를 두 번 이동하지 않도록하고 싶습니다. Bash를 통해 모든 것을하고 싶다면 어떻게 할 수 있습니까?

답변

1

다양한 폴더에있는 영화의 각 사본이 같은 이름이고 모두 동일한 확장자를 가지고 있다고 가정하면 을 사용하여 찾을 수 있고 다른 폴더로 복사 한 다음 이전 폴더를 삭제할 수 있습니다.

find/-iname "*.divx" -type f -print0 | xargs -0 -I '{}' mv "{}" /path/to/new_folder/ 

또는 모든 파일을 반복하고 new_folder에 복사 할 수 있습니다 (아직없는 경우에만). 이미있는 경우 다른 사본을 삭제하십시오. 다음과 같은 것 :

+0

나는'mv -n "$ file"./movie/ && rm -f "$ file"'을 당신의 루프 몸체에 더 가깝게 제안했다. 그리고이 코드는 파일 이름에 WRT 공백이나 유사한 내용으로 나뉘어져 있습니다. – user2719058

+0

@ user2719058 동의합니다. 첫 번째는 filename을 공백으로 처리해야합니다. 둘째로, 저는 방금 예를 든 것입니다. – Amit

+0

특정 영화의 모든 사본은 동일하지만 다양한 영화는 mp4, mkv 등의 확장자가 다릅니다. – user3225710