찾기만 할 때 문법은 다음과 같다.

find 검색할 디렉토리 -name "*" | xargs grep 검색할 내용.
ex) find /home/xxxx/yyyy -name "*" | xargs grep ttf


** 2016.03.15
근데 위에 방법에 문제가 있는지.. 잘 안되는 것 같다. 그냥 grep 만 사용해도 된다.

grep -r "xxxx" 디렉토리경로
ex) grep -r "너구리" .


-r 은 하위 디렉토리까지 모두(Recursively) 검사하라는 뜻이다.

원문은 이 곳에.

바꾸기까지 하려면 응용이 필요하다.
예를 들어, 한 디렉토리 내에 모든 파일을 검색하고, 파일 내용에 있는 특정 문자열을 다른 문자열로 바꿔주고 싶다면 다음과 같이 한다.

먼저 바꾸고자하는 파일들이 있는 특정 디렉토리로 이동한다.
 find . -type f -exec sed -i 's/찾는 문자열/바꿀 문자열/g' {} \;


예) find . -type f -exec sed -i 's/lucid/maverick/g' {} \;


만약 모든 파일이 아니고 특정 파일만 찾는 것이라면, 첫번째처럼 조건을 주면 된다.
예) find /etc/apt/sources.list.d -iname '*.list' -exec sed -i 's/lucid/maverick/g' {} \;

이렇게 되면, 각 파일에 포함되어 있던 lucid 문자열이 maverick 으로 모두 바뀐다.

이 부분은 이 곳 을 참고했다.

[출처] http://egloos.zum.com/nemonein/v/4686258 by 아무도안

'리눅스 명령어' 카테고리의 다른 글

ldd - 공유 라이브러리 의존관계 확인  (0) 2016.12.29
특정 파일내 문자열 치환 2  (0) 2016.10.13

[문제] You want to determine the most popular person in the social network. To do this, you will count the number of "2-friends" that each person has. Person A is called a 2-friend of another person B if they are friends with each other of if there exists some person C who is a friend of both A and B. The most popular person is the person with the highest number of 2-friends. (There might be more than one if multiple people all have the maximal number of 2-friends.)

You are given a String[] friends, where the j-th character of the i-th element is 'Y' if person i and person j are friends, and 'N' otherwise. Return the number of 2-friends of the most popular person in this social network


[예시 : 입력 데이터와 출력 데이터]


friends = {"NYY", "YNY", "YYN"}


Returns : 2


모든 사람이 2명의 전체 친구가 있습니다.


public class FriendScore {


   public static void main(String[] args){

    String[][] friends = new String[][]{{"N","Y","N","N","N"},

                                       {"Y","N","Y","N","N"},

                                       {"N","Y","N","Y","N"},

                                       {"N","N","Y","N","Y"},

                                       {"N","N","N","Y","N"}};



    int fHigher = 0, sHigher=0, flag=0;


    for(int i=0; i<friends[0].length; i++){

        if(fHigher >= sHigher)

            sHigher = fHigher;

        fHigher =0;


      for(int j=0; j<friends[0].length; j++) {

          if(friends[i][j].equals("Y"))

              fHigher++;


          for(int z=0; z<friends[0].length;  z++){

              if(i == j) {

                  continue;

              }else if(friends[j][i].equals("Y") && friends[j][z].equals("Y") && friends[i][z].equals("N"))

                  flag++;

          }


          if(flag >= 2){

           fHigher += flag-1;

           flag = 0;

          }

      }

    }


    System.out.println(sHigher);

   }

}




변하는 것과 변하지 않는 것을 구분하는 프로그래밍



C언어는 컴퓨터 역사의 초기에 개발된 언어입니다. 최신 언어들이 개발 편의를 위해 제공하는 기능들도 없고 문법도 사람보다는 기계에 더 친화적입니다. 그래서 개발자 스스로 철학을 가지고 사용해야하는 언어입니다. 제가 소개하는 디자인 방법들이 자신만의 개발 철학을 세우는데 도움이 되길 바랍니다.

제가 제일먼저 소개해드리고싶은 디자인은 "변하는 것과 변하지 않는 것을 구분하자" 입니다. 가장 먼저 소개하는 이유는 동양철학에서 말하는 음양오행에서 음양에 해당하는 개념이고, 대부분의 잘 만들어진 C 코드의 밑바탕에 이 개념이 깔려있기 때문입니다. 또한 음과 양이 모든 사상의 밑바탕을 이루듯이 언어나 개발 제품에 상관없이 적용할 수 있는 철학이라고 생각하기 때문입니다.

최신 언어들이 제공하는 기능들이나 프로그래밍 기법들을 보면 가장 밑바당에는 "변하는 것과 변하지 않는 것을 구분"하는 개념이 녹아들어있습니다. 객체지향 철학에서 객체가 가지는 속성은 변하는 것이고 속성을 변경하는 메소드는 변하지 않는 것입니다. 객체라는 틀은 변하지 않는 것이고 객체로 생성한 인스턴스는 변하는 것입니다. 함수형 언어들은 함수를 변하지 않는 것으로 생각하고 함수에 입력되는 데이터를 변하는 것으로 생각합니다. 디자인 패턴 기법들을 보면 변하지 않는 코드와 변하는 코드를 분리하는 것이 핵심 개념인 패턴들이 많습니다. 설계 원칙에도 Data driven design이라는 원칙이 있는데 이것또한 최대한 고정된 논리로 다양한 데이터를 처리한다는 원칙입니다. 바꿔 말하면 일정한 코드를 가지고 최대한 다양한 데이터를 처리하도록 하자는 것입니다.

이런 예들을 따져보면 형태가 변하지 않거나, 값이 변하지 않거나, 실제로 생성되는 것이 아니라 생성되는 것들이 공통적으로 가져야할 원칙이거나, 보이지 않게 밑바탕에서 일정하게 동작하는 것 등을 "변하지 않는 것", 혹은 음적인 부분이라고 부를 수 있습니다. 그와 반대로 형태가 변하거나 값이 변하거나, 실제로 생성되어 각자 고유한 값이나 속성을 가지는 개체, 겉으로 드러나 사용자가 조정할 수 있는 값이나 속성들이 양적인 부분, "변하는 것"이라고 부를 수 있습니다.

2가지 예제 코드를 보면서 C언어로 프로그래밍에서 음과 양을 어떻게 나눌 것인지를 고민해보겠습니다. 정답은 없습니다만 고민하는 것 자체로 많은 생각을 이끌어낼 수 있는 실마리가 될 것이라 믿습니다. 비록 간단한 예제를 작성하는 단계에서 "변하는 것과 변하지 않는 것을 구분"하는 일을 연습하지만 사실은 제품을 설계할때부터 코드를 작성할 때까지 계속 고민해야할 사항입니다.


출저 : https://opentutorials.org/module/1329/8583


'개발에 있어서 좋은 글' 카테고리의 다른 글

방어적 프로그래밍  (0) 2016.12.27

+ Recent posts