나는 이것이 1 라이너로 이루어질 수 있다고 생각하지만 약간 성가신 것처럼 보였으므로 쉽게 시작하고 편집 할 수있는 스크립트를 작성하여 호출했습니다. findvids.sh
이것이 나를 위해 일한 것입니다.
참고 : 모든 비디오 파일 형식을 다룰 수는 없지만 대부분을 가지고 있다고 확신합니다. 주목할만한 예외 중 하나는 .mkv입니다. 프로젝트의 대상 형식이므로 이미 처리 된 파일을 찾을 필요가 없습니다. 표현식의 시작과 끝에서 따옴표를 유지하면서 패턴을 검사하고 적절하게 조정하여 필요에 맞게 스크립트에 추가 형식 (확장자)을 추가하는 것이 매우 간단해야합니다. 읽을 권한이없는 파일은 찾을 수 없습니다.
#!/bin/bash
#This script is intended to find virtually all video file formats.
find /. -type f | grep -E "\.webm$|\.flv$|\.vob$|\.ogg$|\.ogv$|\.drc$|\.gifv$|\.mng$|\.avi$|\.mov$|\.qt$|\.wmv$|\.yuv$|\.rm$|\.rmvb$|/.asf$|\.amv$|\.mp4$|\.m4v$|\.mp*$|\.m?v$|\.svi$|\.3gp$|\.flv$|\.f4v$"
편집 의견에 따라 :$
확장 의미의 끝에 검색어 라인의 끝에서 발견되어야 함. 우리가 줄의 시작 부분을 일치시키고 싶다면 일치 ^
하기 전에 사용 합니다. 이 앵커는 여기 에 더 자세히 설명되어 있습니다.
locate를 사용하는 것과 속도를 비교 한 결과는 다음과 같습니다.
time locate *.mkv *.webm *.flv *.vob *.ogg *.ogv *.drc *gifv *.mng *.avi *.mov *.qt *.wmv *.yuv *.rm *.rmvb *.asf *.amv *.mp4$ *.m4v *.mp *.m?v *.svi *.3gp *.flv *.f4v
real 0m8.887s
user 0m5.814s
sys 0m0.052s
vs.
time find /. -type f | grep -E "\.webm$|\.flv$|\.vob$|\.ogg$|\.ogv$|\.drc$|\.gifv$|\.mng$|\.avi$|\.mov$|\.qt$|\.wmv$|\.yuv$|\.rm$|\.rmvb$|/.asf$|\.amv$|\.mp4$|\.m4v$|\.mp4$|\.m?v$|\.svi$|\.3gp$|\.flv$|\.f4v$"
real 0m2.795s
user 0m0.657s
sys 0m1.115s
예기치 않게 찾기가 더 빠릅니다. 이 방법을 사용하겠습니다.
편집 : 추가 테스트를 통해 다른 컴퓨터에서 위치가 더 빨 랐음을 나타냅니다. 캐싱으로 인해 초기 속도 테스트 결과가 벙어리라고 생각합니다.
출처 :
man find
man grep
/programming/7190565/unix-find-multiple-file-types