DOS에는 다음 명령이 있습니다.
xcopy /s *.mp3 ..\TEMP2
우분투에서는 어떻게 할 수 있나요?
cp -r *.mp3 ../TEMP2
불행하게도 필터로 인해 경로가 없는 모든 mp3 파일을 재귀적으로 복사합니다 *.mp3
.
cp -r *.* ../TEMP2
경로를 복사하지만 mp3 파일로 제한할 수는 없습니다.
rsync를 살펴봤지만 이해가 되지 않습니다.
답변1
우분투 도구의 힘은 도구들을 결합할 수 있다는 것입니다. 다음 명령은 현재 디렉터리와 하위 디렉터리에서 모든 .mp3 파일을 찾아 ../TEMP2/
경로를 유지하면서 폴더에 복사합니다.
find -iname '*.mp3' -exec install -D {} ../TEMP2/{} \;
find -iname '*.mp3'
.mp3
- (대소문자 구분 안 함) 으로 끝나는 모든 파일을 찾습니다 .-exec
- 각 일치 항목에 대해 명령을 실행합니다.install -D {} ../TEMP2/{}
../TEMP/
- 경로를 유지하기 위해 일치하는 파일을 복사합니다 . ({}
파일 이름을 포함한 경로로 대체됩니다)
\;
--exec
명령 을 종료합니다
진행 상황을 확인하려면 -ls
앞에 명령에 ("list")를 추가하세요 -exec
. 뒤에 붙일 수도 있지만 \;
, 이 경우에는 복사된 후에 이름이 표시됩니다. 예:
find -iname '*.mp3' -ls -exec install -D {} ../TEMP2/{} \;
find -iname '*.mp3' -exec install -D {} ../TEMP2/{} \; -ls
답변2
여러 가지 옵션이 있지만 정말 간단한 것은 없습니다. 유감스럽게도…
재동기화
rsync -r --include="*/" --include="*.mp3" --exclude="*" --prune-empty-dirs . ../TEMP2
이는 모든 파일을 제외( exclude="*"
)하지만 모든 디렉터리를 조사( include="*/"
)하고 모든 mp3 파일을 포함( include="*.mp3"
)하라는 의미입니다. mp3 파일이 포함되지 않은 디렉터리를 복사하지 않으려면 추가로 이 --prune-empty-dirs
옵션이 필요합니다.
지퍼
zip -R archive.zip "*.mp3"
unzip -d ../TEMP2 archive.zip && rm archive.zip
첫 번째 명령은 모든 mp3 파일이 포함된 아카이브를 생성하고, 두 번째 명령은 대상 디렉터리에 콘텐츠의 압축을 풀고 성공한 경우 아카이브 파일을 삭제합니다.
찾다
find . -iname "*.mp3" -exec install -D {} ../TEMP2/{} ";"
../TEMP2
이렇게 하면 먼저 디렉터리 구조를 만든 후 모든 mp3 파일을 찾아 디렉터리의 해당 경로에 복사합니다 ( install -D
).
모두 복사하고 나머지는 삭제하세요
이는 파일이 몇 개만 있는 경우에만 의미가 있습니다.~하지 않다복사하고 싶은 것:
cp -r * ../TEMP2
find ../TEMP2 -type f \! -iname '*.mp3' -delete
모든 파일을 복사한 다음 mp3 파일이 아닌 모든 파일을 삭제합니다.