강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

특정디렉토리 내에 존재하는 파일들 한번에 편집하는 명령어 만들기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

특정디렉토리 내에 존재하는 파일들 한번에 편집하는 명령어 만들기









 

특정 디렉토리내의 모든 파일을 vi로 하나씩 차례대로 편집하고자 할 때에서는 “ls -l”을 해서 파일이름을 확인한 후에 vi명령어를 차례대로 실행하는 것이 일반적인 방법입니다.

 

 

 

 

 

용도(목적) : 특정디렉토리 내의 모든 파일들을 vi로 편집하고자 할 경우

 

사용형식 : ls -l 대상디렉토리 | grep “^-” | awk ‘{print “vi “ $9}’

 

아래의 예에 대한 전체적인 과정을 간단히 설명하면 다음과 같습니다.

 

 

 

 

 

“ls -l 대상디렉토리로 특정 디렉토리의 파일과 디렉토리 리스트를 출력합니다.

 

 

 

 그리고 grep “^-” 으로 파일리스트만을 한 행씩 출력합니다.

 

 

 

 그리고 awk ‘{print “vi “ $9}’ 으로 각각의 행들에 “vi 파일명으로 하는 결과를 출력합니다.

 

 

 

 이렇게 출력한 결과를 복사하여 imsi라는 파일에 저장한 다음 쉘로 실행시키면 됩니다.

 

 

 

  하나씩 살펴보도록 하겠습니다.

 

 

 

 

 

아래와 같이 현재 디렉토리에는 5개의 파일이 존재합니다.

 

 

 

 (설명의 편의를 위하여 5개의 파일만을 대상으로 하지만 이 예를 실무에서 사용하려면 10개이상되는 파일을 vi로 편집하고자 할 경우에 효과가 있습니다.

 

 

 

) 이들 파일을 모두 vi로 열어서 하나씩 편집하고자 한다면 많은 시간이 소요될 것입니다.

 

 

 

 

 

[root@su250 html]# ls -l

합계 0

-rw-r--r-- 1 root root 0 2008-12-2317:47 text01

-rw-r--r-- 1 root root 0 2008-12-2317:47 text02

-rw-r--r-- 1 root root 0 2008-12-2317:47 text03

-rw-r--r-- 1 root root 0 2008-12-2317:47 text04

-rw-r--r-- 1 root root 0 2008-12-2317:47 text05

[root@su250 html]#

 

따라서 위의 사용형식과 같이 아래와 같은 명령으로 “vi 파일명으로 하는 vi리스트를 출력 하였습니다.

 

 

 

 

 

[root@su250 html]# ls -l | grep "^-" | awk '{print "vi "$8}'

vi text01

vi text02

vi text03

vi text04

vi text05

[root@su250 html]#

 

이렇게 출력결과를 확인한 후에 이 출력결과를 아래와 같이 imsi.sh라는 임의의 파일에 저장하였습니다.

 

 

 

 

 

[root@su250 html]# ls -l | grep "^-" | awk '{print "vi "$8}' > imsi.sh

[root@su250 html]#

[root@su250 html]# cat imsi.sh

vi imsi.sh

vi text01

vi text02

vi text03

vi text04

vi text05

[root@su250 html]#

 

그리고 아래와 같이 “vi  imsi.sh”를 실행하여 imsi.sh파일을 다음과 같이 살짝(?) 편집하십시오.

 

[root@su250 html]# vi imsi.sh

 

#!/bin/bash

vi text01

vi text02

vi text03

vi text04

vi text05

~

~

~

~

 

첫번째 행에 있던 불필요한 “vi imsi.sh”는 삭제하고 그 자리에 “#!/bin/bash”를 입력하십시오. 쉘스크립트의 첫행에는 반드시 #!/bin/bash가 들어가야 합니다.

 

 

 

 쉘로 실행하기 위한 것이므로 빠뜨리면 안됩니다.

 

 

 

 이렇게 수정하신 후에 vi를 빠져 나옵니다.

 

 

 

 

 

그리고 imsi.sh파일을 실행시키기 위하여 아래와 같이 chmod명령어로 755퍼미션을 설정 합니다.

 

 

 

  이제 imsi.sh를 실행시키시면 현재 디렉토리에 존재하는 모든 파일들을 대상으로  vi를 자동 실행하게 됩니다.

 

 

 

 

 

[root@su250 html]# chmod 755 imsi.sh

[root@su250 html]#

[root@su250 html]# ls -l imsi.sh

-rwxr-xr-x 1 root root 62 2008-12-2319:17 imsi.sh

[root@su250 html]#

[root@su250 html]# ./imsi

 

앞에서도 말씀드린바와 같이 이 방법은 작업대상 파일의 개수가 최소 10개이상 될 경우에 매우 유용합니다.

 

 

 

 vi를 차례대로 자동 실행시키기 위하여 사용하셔야 효과가 큽니다.

 

 

 

 물론, vi뿐 아니라 여러 개의 파일들에 대한 동일한 명령어를 일괄수행하기 위한 방법으로도 사용할 수 있습니다.

 

 

 

 필자가 소개한 이런 방법들은 시스템관리 실무를 하다 보면 자연스럽게 요구되는 방법들입니다.

 

 

 

 이런 방법을 얼마나 많이 알고 활용하느냐는 여러분들의 몫이겠지요.

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,806 개
  • 현재 접속자 :  130 명