안녕하세요..
예를 들어 test라는 디렉토리에 하위디렉토리및 파일 있다고 할때 모든 파일의 "test"의 단어를 "TESTING"으로 바꿀려고 하는데..
한방에 (-.-) 바꾸는 좋은 꽁수가 있을까요?
지금 완전 노가다 하고 있네여...
좋은 하루 보네세요
find 와 sed 를 조합하면 됩니다.
sed:http://doc.kldp.org/Translations//html/Sed-KLDP/
Orion Project : http://orionids.org
for i in `find /home3/cyber/html -name \*`; do mv $i `echo $i|tr '[A-Z]' '[a-z]' `; done
제가 대문자를 모두 소문자로 바꾼 스크립트입니다. 약간만 응용하면 되겠네여
명령어를 find 를 ls 로 하시던가, 등으로 하시면 될것 같네여
아바타 제작기간~~ 무려 5초!!!
안녕하세요.. 예를 들어 test라는 디렉토리에 하위디렉토리및 파일 있다고 할때 모든 파일의 "test"의 단어를 "TESTING"으로 바꿀려고 하는데.. 한방에 (-.-) 바꾸는 좋은 꽁수가 있을까요? 지금 완전 노가다 하고 있네여... 좋은 하루 보네세요
gnu-textutils 에 보시면 tr 이라는 유틸이 있습니다..
한번 확인해 보세요.. 사용법은 메뉴얼 페이지 보세요.. 한글 메뉴얼 페이지
있습니다..
replaceAll 파일을 실행가능하게 권한을 바꿔 주시고. replaceAll find_string replace_string [directory]
예를 들어 현재 디렉토리에 test를 TESTING으로 바꾸고 싶을 때, ./replaceAll test TESTING 하시면 됩니다.
원본 파일은 ~.ori가 붙어서 보존되고, 바뀔 문자열이 적용된 파일이 만들어집니다.
특정 디렉토리를 지정하고 싶으시다면, ./replaceAll test TESTING ~/exclamation 이렇게 써주시면 됩니다.
도움이 되셨으면 좋겠네요.
첨부파일로 안 들어가서 스크립트를 그대로 올렸습니다.
#!/bin/bash #특정 디렉토리에 있는 모든 파일에서 일치하는 문자열을 모두 찾아 바꾸기.
if [ $# -ne 2 ] then echo "사용법 'basename $0' find_string replace_string [directory]" exit 65 fi
if [ -n "$3" ] then directory=$3 # 디렉토리 이름이 인자로 주어질 경우... else directory=$PWD # 아니면 현재 디렉토리에 대해서. fi
#for file in $directory/* for file in $(find . -type f -name '*' | sort ) do if [ $0 != $file ];then IsMessage=$(grep "$1" -c $file) # echo $file # if [ $IsMessage = 0 ]; then # echo $file No Message # else # echo $file Message if [ $IsMessage != 0 ]; then cp $file $file.ori sed -e "s%$1%$2%" $file > $file.tmp echo $file에서 찾아 바꾸기를 하였습니다. mv "$file.tmp" $file fi fi done
exit 0
$ find . -type f -exec perl -pi -e 's|test|TESTING|g' {} \; 이거 한줄입니다.
$ find . -type f -exec perl -pi -e 's|test|TESTING|g' {} \;
커널컴파일한다고 그녀를 기다리게 하지 마라.
vim 을 활용한 예제는..
vim `find . -type f`
이렇게 한후
:set hidden
:argdo %s/바꾸기전문자열/바꾼후문자열/gc
이렇게 하면
하나하나 확인하면서 바꿔줄 수 있습니다.
그런 후
모든 화일 저장하시려면
:wall
하시면 되고.
이것의 이점은..
하나하나 확인할 수 있다는 데 있죠.~~~~
vim6.0 이상이어야 합니다.
$ cat > start.sh #!/usr/local/bin/bash for i in `find . -name "*" -print` do sed -e s/test/TESTING/g $i > $i.old mv $i.old $i done
$ ./start.sh
다들 이렇게 하실듯..저위에와 같은 방식이네요.
윗분처럼
find 와 sed 조합을 생각했는데..
역시나 방법이 정말로 많군요.
단순 노가다 성 작업을
여러가지 재미있는 방법으로 해결 할 수 있다는것 도
리눅스가 가진 장점이 아닌가 싶네요 ^^
########################################################## 넘어지는건 아직 괜찮다. 하지만 넘어질때마다 무언가를 주워서 일어나자.
텍스트 포맷에 대한 자세한 정보
<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]
Re: 모든 파일의 단어 바꾸기
find 와 sed 를 조합하면 됩니다.
sed:
http://doc.kldp.org/Translations//html/Sed-KLDP/
Orion Project : http://orionids.org
[code:1]for i in `find /home3/cyber/html
for i in `find /home3/cyber/html -name \*`; do mv $i `echo $i|tr '[A-Z]' '[a-z]' `; done
제가 대문자를 모두 소문자로 바꾼 스크립트입니다.
약간만 응용하면 되겠네여
명령어를 find 를 ls 로 하시던가, 등으로 하시면 될것 같네여
아바타 제작기간~~ 무려 5초!!!
Re: 모든 파일의 단어 바꾸기
gnu-textutils 에 보시면 tr 이라는 유틸이 있습니다..
한번 확인해 보세요.. 사용법은 메뉴얼 페이지 보세요.. 한글 메뉴얼 페이지
있습니다..
비슷한 작업을 할 일이 있어서 만든 스크립트입니다.
replaceAll 파일을 실행가능하게 권한을 바꿔 주시고.
replaceAll find_string replace_string [directory]
예를 들어 현재 디렉토리에 test를 TESTING으로 바꾸고 싶을 때,
./replaceAll test TESTING 하시면 됩니다.
원본 파일은 ~.ori가 붙어서 보존되고, 바뀔 문자열이 적용된 파일이 만들어집니다.
특정 디렉토리를 지정하고 싶으시다면,
./replaceAll test TESTING ~/exclamation
이렇게 써주시면 됩니다.
도움이 되셨으면 좋겠네요.
첨부파일로 안 들어가서 스크립트를 그대로 올렸습니다.
#!/bin/bash
#특정 디렉토리에 있는 모든 파일에서 일치하는 문자열을 모두 찾아 바꾸기.
if [ $# -ne 2 ]
then
echo "사용법 'basename $0' find_string replace_string [directory]"
exit 65
fi
if [ -n "$3" ]
then
directory=$3 # 디렉토리 이름이 인자로 주어질 경우...
else
directory=$PWD # 아니면 현재 디렉토리에 대해서.
fi
#for file in $directory/*
for file in $(find . -type f -name '*' | sort )
do
if [ $0 != $file ];then
IsMessage=$(grep "$1" -c $file)
# echo $file
# if [ $IsMessage = 0 ]; then
# echo $file No Message
# else
# echo $file Message
if [ $IsMessage != 0 ]; then
cp $file $file.ori
sed -e "s%$1%$2%" $file > $file.tmp
echo $file에서 찾아 바꾸기를 하였습니다.
mv "$file.tmp" $file
fi
fi
done
exit 0
아주 간단하게..perl 로...
$ find . -type f -exec perl -pi -e 's|test|TESTING|g' {} \;
이거 한줄입니다.커널컴파일한다고 그녀를 기다리게 하지 마라.
vim 을 활용한 예제는..vim `find . -type f`
vim 을 활용한 예제는..
vim `find . -type f`
이렇게 한후
:set hidden
:argdo %s/바꾸기전문자열/바꾼후문자열/gc
이렇게 하면
하나하나 확인하면서 바꿔줄 수 있습니다.
그런 후
모든 화일 저장하시려면
:wall
하시면 되고.
이것의 이점은..
하나하나 확인할 수 있다는 데 있죠.~~~~
vim6.0 이상이어야 합니다.
이런 script로..
$ cat > start.sh
#!/usr/local/bin/bash
for i in `find . -name "*" -print`
do
sed -e s/test/TESTING/g $i > $i.old
mv $i.old $i
done
$ ./start.sh
다들 이렇게 하실듯..저위에와 같은 방식이네요.
윗분처럼 find 와 sed 조합을 생각했는데..역시나 방
윗분처럼
find 와 sed 조합을 생각했는데..
역시나 방법이 정말로 많군요.
단순 노가다 성 작업을
여러가지 재미있는 방법으로 해결 할 수 있다는것 도
리눅스가 가진 장점이 아닌가 싶네요 ^^
##########################################################
넘어지는건 아직 괜찮다.
하지만 넘어질때마다 무언가를 주워서 일어나자.
댓글 달기