
이름(동영상)이 포함된 파일 목록이 많이 있습니다.
모든 파일 이름을 텍스트 파일에 쓸 수 있었습니다. 이제 파일 이름이 많은 텍스트 파일이 있습니다(한 줄에 에피소드 1개). 이제 해당 텍스트 파일을 읽고 E
누락된 에피소드 번호를 알려줄 수 있는 것이 필요합니다.
S1-E18-(Date)-(Title)-(Random numbers).mp4
다음은 목록의 예입니다.
S1-E1-20100526-title-of-video-1400316375.mp4
S1-E3-20100517-title-of-video-15457547.mp4
S10-E5-20100421-title-of-video-14467457.mp4
S5-E7-20120912-title-of-video-17467457.mp4
이 경우 파일 S1-E2
과 파일 S10-E4
이 누락되었음을 쉽게 알 수 있습니다. 하지만 큰 목록이 있으면 누락된 파일을 어떻게 찾을 수 있나요? (시즌 번호 남기기 ) 에피소드 번호를 의미하는지 S1, S2
확인하면 됩니다.E
가장 큰 기존 파일 번호는 이고 S50-E2184
, 가장 작은 기존 파일 번호는 다음과 같습니다.S1-E1
답변1
모든 이름을 "file_with_list_of_files"라는 파일에 저장하고 linux/unix 터미널에서 아래 명령을 실행합니다[Mac 터미널에서 시도했습니다]:
cat file_with_list_of_files | sed 's/^[A-Z][0-9]*-//g' | grep -v "^E"
-- 또는 --
cat file_with_list_of_files | awk -F- '{print $2}' | grep -v "^E"
여기에는 첫 번째 -(하이픈) 뒤에 E가 없는 모든 파일 이름이 나열됩니다. 다른 더 좋은 방법을 찾을 수도 있습니다.
답변2
모든 에피소드 서명이 포함된 파일을 준비하세요. 각 시즌에 몇 개의 에피소드가 있는지는 알려주지 않았지만 분명히 알아야 합니다. 파일을 준비하는 방법은 다음과 같습니다.
>all_episodes # just to empty the file which may or may not exist printf 'S1-E%s\n' {1..3} >>all_episodes # 3 episodes in season 1 printf 'S2-E%s\n' {1..5} >>all_episodes # 5 episodes in season 2 printf 'S3-E%s\n' {1..8} >>all_episodes # and so on printf 'S50-E%s\n' {1..2184} >>all_episodes
이는 각 시즌이 자체 에피소드 1로 시작한다고 가정합니다(질문이 명확하지 않습니다). 파일은 형식의 행으로 구성됩니다
S<n>-E<m>
(예:S2-E3
.동일한 형식으로 소유한 에피소드 파일을 만듭니다.
cut -d - -f -2 your_current_list >owned_episodes
이 명령
-
은디구분자를 사용하여 라인 조각을 다음까지 반환합니다.에프현재 목록에서 2번을 입력하세요.owned_episodes
패턴으로 처리 하고all_episodes
패턴이 없는 줄을 찾으려면 필터를 사용하세요.grep -vxFf owned_episodes all_episodes
-x
여기서는 사용합니다 . 요점은S50-E3
일치해서는 안된다는 것 입니다S50-E31
.-F
귀하의 경우에는 필요하지 않지만일반적으로고정 문자열을 제공하는 동안 사용해야 합니다. 그만큼옵션이다:-F
고정 문자열을 사용하여 일치시킵니다. 지정된 각 패턴을 정규식 대신 문자열로 처리합니다. [...]-f pattern_file
pathname 으로 명명된 파일에서 하나 이상의 패턴을 읽습니다pattern_file
. [...]-v
지정된 패턴과 일치하지 않는 행을 선택하십시오. [...]-x
전체 고정 문자열과 일치하는 종료 문자를 제외하고 줄의 모든 문자를 사용하는 입력 줄<newline>
또는 일치하는 줄인 정규식만 고려하십시오.