find 명령에 (THIS=x OR THAT=Y) AND OTHER=Z를 사용하는 방법

find 명령에 (THIS=x OR THAT=Y) AND OTHER=Z를 사용하는 방법

다음을 사용하여 비디오 라이브러리를 x264에서 x265로 변환하고 있습니다.

파일 이름 어디에서나 x264를 찾지만 x265로 시작하는 것은 완료된 파일이므로 제외합니다.

sudo find /mnt/local/int001/media/TV/ -name '*x264*.mkv' -and -not -name 'X265*.mkv' -print0 | xargs -0 /usr/local/bin/ConvertTo265.sh

x264(h264의 특정 구현)가 아닌 h264(인코딩 표준) 및 기타 변형으로 태그가 지정된 것을 많이 발견했습니다.

다음에 대한 검색 기능을 향상하려면 어떻게 해야 합니까?

'X265*'를 포함하지 않지만 다음 중 하나 이상을 포함합니다.

  • 'x264'
  • 'h264'
  • 'h.264'

답변1

find /mnt/local/int001/media/TV/ \
  \( -name '*[xXhH]264*.mkv' -o -name '*[xXhH].264*.mkv' \) \
  ! -name '*[xX]265*' -type f -exec /usr/local/bin/ConvertTo265.sh {} +

여기서는 GNUism( -and, -not, -print0/ xargs -0)을 해당 표준 항목( -a또는 기본값인 , !) 으로 바꿉니다 -exec cmd {} +.

확장명에서 대소문자를 구분하지 않고 일치시키려면 mkvwith로 바꾸십시오 (또는 GNU 또는 호환을 사용하는 경우 사용).[mM][kK][vV]-inamefind

와 함께 zsh:

set -o extendedglob # best in ~/.zshrc
ConvertTo265.sh ./**/(#i)(*x265*~*[xh](.|)264*).mkv(D.)

관련 정보