디렉토리내 파일 검색및 치환

rainmon의 이미지

여러 디렉토리중 특정 디렉토리내 파일및 서브 디렉토리안의 파일들의 내용중 검색조건에 맞는 문자열(단어가 아니라 문장)이 발견되면 치환하는 작업을 하려는데 어떤 방법을 쓰는게 가장 쉽고 편할까요?

아크로에디터는 기본적으로 지원하는 줄 알고있고
에디터플러스는 열려진 파일들에 대해 일괄적용이 가능한 줄 아는데
emacs에서는 어떤 방법이 있는지 모르겠습니다.

이건 사담인데.. 회사 동료가 '걍 에디터플러스 써~ 쫌 제발..' 이러는 군요. 쉬운길 놔두고 왜 자꾸 어렵게 가려냐면서 안타까워 하네요. 저는 이게 재밌는데 이해를 못하나 봅니다. ㅠ_ㅠ

cinsk의 이미지

1. 특정 디렉토리를 C-x C-f로 엽니다. (dired 모드 시작)

2. 서브 디렉토리 내용까지 다 보기 위해서 C-u s를 누른 다음, ls option "-al"을 "-alR"로 바꿉니다. (이제 모든 파일을 볼 수 있습니다.)

3. 원하는 파일들을 선택합니다. 전체 선택/비선택은 't' 키로, 현재 줄 파일 선택은 'm', 현재 줄 파일 선택 해제는 'u', 전체 선택 해제는 'U', 주어진 regexp를 만족하는 파일 선택은 '% m REGEXP <RET>'입니다. 즉 '% m \.c$'는 모든 .c파일들을 선택합니다. 강력한 명령으로, 주어진 regexp pattern을 만족하는 내용을 가진 파일들을 선택하는 명령은 '% g regexp <RET>'입니다.

4. 선택한 파일에서 특정 regexp를 내용으로 가진 파일들을 대상으로 치환하기 위해 'Q REGEXP <RET> TO <RET>' 명령을 실행하면 (선택한 파일들을 대상으로) REGEXP를 TO로 바꿔줍니다. 물론 이 작업은 일일히 물어보기 때문에 한꺼번에 확 바꾸려면 '!'를 계속 입력해 주어야 합니다.

5. 치환 도중 다른 명령을 입력한 경우, M-, 명령을 쓰면 다시 치환 작업을 수행합니다.

정말 오늘따라 Emacs 질문이 많네요. 흐뭇~ 8)

정태영의 이미지

vim -c "argdo %s/ABC/DEF/g | w" *.txt

위처럼 쓸수도 있으니까 vim 으로도 못할건 없을 듯 하네요 ;)

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

rainmon의 이미지

cinsk wrote:
1. 특정 디렉토리를 C-x C-f로 엽니다. (dired 모드 시작)

2. 서브 디렉토리 내용까지 다 보기 위해서 C-u s를 누른 다음, ls option "-al"을 "-alR"로 바꿉니다. (이제 모든 파일을 볼 수 있습니다.)

3. 원하는 파일들을 선택합니다. 전체 선택/비선택은 't' 키로, 현재 줄 파일 선택은 'm', 현재 줄 파일 선택 해제는 'u', 전체 선택 해제는 'U', 주어진 regexp를 만족하는 파일 선택은 '% m REGEXP <RET>'입니다. 즉 '% m \.c$'는 모든 .c파일들을 선택합니다. 강력한 명령으로, 주어진 regexp pattern을 만족하는 내용을 가진 파일들을 선택하는 명령은 '% g regexp <RET>'입니다.

4. 선택한 파일에서 특정 regexp를 내용으로 가진 파일들을 대상으로 치환하기 위해 'Q REGEXP <RET> TO <RET>' 명령을 실행하면 (선택한 파일들을 대상으로) REGEXP를 TO로 바꿔줍니다. 물론 이 작업은 일일히 물어보기 때문에 한꺼번에 확 바꾸려면 '!'를 계속 입력해 주어야 합니다.

5. 치환 도중 다른 명령을 입력한 경우, M-, 명령을 쓰면 다시 치환 작업을 수행합니다.

정말 오늘따라 Emacs 질문이 많네요. 흐뭇~ 8)

와~ 감사합니다. 이번 질문은 답변받기가 힘들줄 알았는데 ^^

5번의 경우 이게 재귀편집이라는 기능인것 같네요.
이런게 된다면 회사 동료들에게 emacs를 써야하는 이유를 설명하는데 충분하겠습니다. ㅋㅋ

댓글 달기

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 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 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>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 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>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 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>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.