디렉토리의 모든 파일에서 모든 대괄호 유형과 그 안에 있는 문자열을 제거합니다.

디렉토리의 모든 파일에서 모든 대괄호 유형과 그 안에 있는 문자열을 제거합니다.

특별한 순서 없이 다양한 유형의 괄호가 포함된 아주 오래된 비디오 파일이 수천 개 있습니다. 나는 파일을 "정리"하려고 했습니다. 즉, 파일의 모든 대괄호와 문자열이 제거되고 빈 문자열로 효과적으로 대체되도록 파일 이름을 바꾸었습니다. 예는 다음과 같습니다

{xyz}<abc>actual_title[prev_suffix](suffix)some_other_text.mp4

대괄호는 올바르게 사용되었습니다. 즉, 중첩된 대괄호일 수는 있지만 {xyz<}abc>와 같은 파일 이름은 없습니다. 완전히 괄호로 명명된 파일은 없습니다. 항상 괄호가 없는 섹션이 있습니다. 또한 모든 괄호를 제거하면 두 파일의 이름이 정확히 같을 수도 있습니다. 이 경우 파일이 어떻게 다른지는 상관하지 않습니다.

내가 원하는 결과는

actual_titlesome_other_text.mp4

순진하게 말하면 각 대괄호 쌍에 대해 한 번씩 파일 이름을 여러 번 전달하면 쉽게 수행할 수 있지만 정규식을 구성하여 더 빠르게 수행할 수 있습니까?

답변1

사용진주의rename:

rename -n 's/\{[^\}]+\}//g;s/<[^<]+>//g;s/\[[^\]]+\]//g;s/\([^\)]+\)//g' ./*actual*

출력이 만족스러우면 제거하십시오 -n(일명).dry-run

관련 정보