%20%EC%9D%BC%EC%B9%98.png)
이름이 같은 파일이 두 개 있습니다.
(a).1
(a).2
...
(a).100
많은 처리 도구가 실제로 마음에 들지 않고 (
파일 )
이름에서 다른 이름으로 이름을 바꾸는 것이 가장 좋다고 생각했습니다. 파일 이름 바꾸기를 검색하다가 rename
정규식을 입력할 수 있는 멋진 도구를 찾았습니다. 좋아, 이것을 시도해 보자:
$ rename -v s/\(a\)/b/ \(a\).*
(a).1 renamed as (b).1
(a).2 renamed as (b).2
(a).3 renamed as (b).3
흠 내가 기대했던 것과는 다릅니다. 약간의 구글링 끝에 나는 \(
\)
그것이그룹화 연산자. 내가 (
)
명령에서 탈출하지 않았기 때문에 어떤 종류의 의미가 있습니다 .
.
모든 유형의 값과 일치하는 문자를 사용하여 이름 바꾸기 문제를 해결했습니다 .
rename -v s/.b./b/ \(b\).*
이 솔루션은 실제로 좋지 않습니다. 그렇다면 Bash/Linux/Unix Regex에서 어떻게 일치합니까 (
?)
답변1
필요한 것은 다음과 같습니다.
find -name "(*)*" -type f | rename 's/\(|\)//g'
먼저 현재 디렉터리에서 설명된 이름과 일치하는 파일을 찾은 다음 대괄호를 제거하여 이름을 바꿉니다. 일치하는 문자( 및 )가 아무 것도 대체되지 않은 것을 볼 수 있습니다.