시스템에서 모든 비디오 파일을 어떻게 찾을 수 있습니까?


11

Unity Lens File 검색을 사용하여 *.*Last Modified = All, Type = Videos 및 Size = All로 필터링을 시도했지만 그림 폴더에 .3gp 파일이 있다는 것을 알았지 만 아무것도 찾지 못했습니다. 파일 시스템에 마운트 된 다른 드라이브에 수많은 비디오 파일이 있음을 알고 있습니다. 필자 는 가능한 확장명 목록을 작성 find했으며 find ./ -name "* .ext"-o (etc 등, 광고 구역) 등을 사용 하여 명령을 여러 번 반복 하여 운이 없었습니다. 해결 방법이 무엇입니까?


나는 그것을 시도하지 않았지만 OMG에 관한 기사가있었습니다! FSearch 앱에 대한 우분투. 확인하고 싶을 수도 있습니다. omgubuntu.co.uk/2016/10/fsearch-fast-file-search-tool-linux
Jo-Erlend Schinstad

@ Jo-ErlendSchinstad 제안 해 주셔서 감사하지만 3 초 안에 CLI를 통해 결과를 가져 오면이 접근 방식에 만족합니다. 나는 그것을 볼 것이다. :-)
Geek

그러나 명령을 이해하지 않으면 잊어 버릴 것입니다. 그리고 명령을 이해했다면 질문하지 않았을 것입니다. 일을 끝내고 싶은 사람들이 더 쉽게 일을함으로써 우분투를 향상 시키자. 앱을 추가하거나 이미 존재하는 앱으로 사람들을 가리켜 서 그렇게 할 수 있습니다.
Jo-Erlend Schinstad

@ Jo-ErlendSchinstad 나는 종종 연구와 분석을 통해 얻은 이해력이 부족하기 시작합니다. 이 접근법은 개발에 필수적이라고 생각합니다. 검색 프로세스를 통해 스크립트를 만들어 ~ / bin에 넣었을 때 여기에서 공유하기로 선택한 솔루션이 생겼습니다. 그것은 또한 내 대답에 있기 때문에 동기 부여를 가진 사람은 그것을 파싱하고 이해할 수 있습니다.
Geek

네가 옳아. 우리는 실제로 데스크탑이 필요하지 않습니다. 명령 행을 사용하여 거의 모든 것을 할 수 있습니다. 그러나 우리가 성장하고 싶다면 대부분의 사람들이 그런 종류의 것을 배우기를 원하지 않는다는 것을 깨달아야합니다. 스택과 힙의 차이점을 설명조차 할 수없는 개발자를 알고 있습니다.
Jo-Erlend Schinstad

답변:


14

대안 : 파일 검색 :

sudo find . -type f -exec file -N -i -- {} + | grep video

또는 파일 이름 만 원한다면 ...

sudo find . -type f -exec file -N -i -- {} + | sed -n 's!: video/[^:]*$!!p'

-N, --no-pad: 파일 이름을 채우지 마십시오

-i, --mime: file 명령이 사람이 읽을 수있는 기존의 문자열이 아닌 MIME 유형 문자열을 출력하도록합니다. 따라서 'text / plain; 'ASCII text'가 아닌 charset = us-ascii '입니다. 이 옵션이 작동하기 위해 파일은 명령 자체가 인식하는 파일 (예 : 많은 텍스트 파일 유형, 디렉토리 등)을 처리하는 방식을 변경하고 대체 '매직'파일을 사용합니다. (아래의 파일 섹션을 참조하십시오).


파일 섹션은 다음을 가리 킵니다.

파일

/usr/share/misc/magic.mgc 기본 컴파일 된 매직 목록.

/usr/share/misc/magic 기본 매직 파일이 들어있는 디렉토리.


file 비록 느리지 만 wwwwwwwwwwwwwwww이지만 (이는 찾은 모든 파일을 엽니 다) 모든 확장을 추가 할 필요가없는 장점이 있습니다.


locate 사용 :

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

어느 "아래의 파일 섹션"
Geek

추가되었습니다! 매뉴얼 페이지에 숨겨져 있습니다 : D
Rinzwind

이상하게도, 위치가 더 빠를 것으로 예상했지만 위치 명령을 사용하면 시간 : 실제 0m8.985s를 얻고 내 찾기 명령을 사용하면 시간을 얻을 수 있습니다 : 실제 0m2.595s
Geek

1
아 ... 모든 파일을 찾습니다. 당신이 어디에서 찾을 수 없습니까?
Rinzwind

큰 영향을 미치지는 않지만 -e 스위치를 추가했지만 이미 사라진 파일에 대한 결과를 반환하는 것은 도움이되지 않습니다. 부여 된 sys 시간은 찾기에 훨씬 더 낮지 만 결과에 대한 실시간 시간은 내가 정말로 염려하는 전부입니다.
Geek

5

나는 이것이 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


touch hello.mp4비디오 파일> :-D를 만들지 않고 locate속도를 높이 도록 변경할 수 있습니다 .
Rinzwind

@Rinzwind 관련 유효 지점 touch그러나이 시스템에서는 수행되지 않았 으므로이 경우에는 실제로 관련이 없습니다. 찾기에 관한 한 updatedb현재 데이터를 얻으려면 이전에 실행 해야 했습니까?
Geek

예, updatedb는 매일 수행되므로 몇 시간 동안 지속 할 필요가 없다고 가정 할 수있는 경우 (결과를 반환하는 속도는 find : D보다 훨씬 큰 크기 임)
Rinzwind

@Rinzwind 저는 locate를 사용 하여이 예제를보고 싶습니다.
Geek

위치를 추가했습니다.
Rinzwind
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.