find로 directory 와 파일명 찾아 바꾸기 - 허접이라 잘 안되네요 고수님들의 도움 부탁드려요

muburi의 이미지

안녕하세요 고수님들!

쉽게 하위 디렉토리에서 특정 패턴이 있는 파일을 찾아서 파일명만 특정 패턴에서 다른 패턴으로만 바꾸고 싶습니다.

/user/test/abc/abc123ad.a 가 있다면 123 ->456으로 바꾸어 /user/test/abc/abc456ad.a

결론적으론 이렇게요

find . -type f -name "*123*" 이렇게 찾는거 까지는 되는데

xargs나 -exec를 써서 해보려고해도 잘되지 않네요

find . -type f -name "*123*" | xargs mv $1 <$1에서 특정패턴만 바뀐녀석>
이렇게 해보려 했는데 <$1에서 특정패턴만 바뀐녀석>를 모르겠네요...

고수님들의 솔루션을 부탁드려요

pogusm의 이미지

$ find *123* | sed -e 's/\(.*\)123\(.*\)/mv \1123\2 \1456\2/' | sh

요렇게 하면 될거 같은데요?

muburi의 이미지

와 잘 되네요 너무 감사드려요.

sed -e 's/\(.*\)123\(.*\)/mv \1123\2 \1456\2/' | sh 이부분이 잘 이해가 되지는 않네요

\(.*\)123\(.*\) : 123 들어간 패턴을 찾는 거 같은데요. 아마 (.*)인지요?
\1123\2 \1456\2/ : \1과 \2는 앞에서 들어간 \(.*\)를 순서대로 받는 것같은데 맞는 것인지요?

Fe.head의 이미지

(.*)123(.*) ==> 123 앞뒤의 글자들을 1, 2번 그룹화 시킵니다.
그룹화된걸 이용하는건 \1 (1번그룹화), \2 (2번그룹화) 이구요.

\1123\2 \1456\2 = (1번그룹)123(2번그룹) (1번그룹)456(2번그룹)
이렇게 되겠네요.

/user/test/abc/abc123ad.a 가 예가되면
1번그룹 "/user/test/abc/abc"
2번그룹 "ad.a"

\1123\2 \1456\2 = (1번그룹)123(2번그룹) (1번그룹)456(2번그룹)
대입해보면
/user/test/abc/abc123ad.a /user/test/abc/abc456ad.a

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

muburi의 이미지

감사드려요 그룹화에 대한 개념을 몰랐었는데 오늘도 한수 배우고 갑니다.
즐거운 하루 되셔요

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.