2014-03-13 3 views

답변

4

사용 find :

find /path -name "*.md" -exec perl -pi -e 's/FOO/BAR/g' {} \; 
+0

당신을 감사합니다! 잘 했어! (내가 올바른 디렉토리에 있었기 때문에 독자가 혼란 스러울 때를 대비하여 '/ path'를 './'로 변경했습니다) – user2251284

0

bash parameter expansion를 사용하여 간단한 & 순수 bash는 한 줄 솔루션 : devnull에 의해 제안이 find와 결합 될 수있다 물론

$ cd ~/ 
    $ mkdir test 
    $ cd test/ 
    $ touch foo{1..10}.md 
    $ ls 
    foo1.md foo10.md foo2.md foo3.md foo4.md foo5.md foo6.md foo7.md foo8.md foo9.md 

    $ for file in ./*.md; do mv "$file" "${file/foo/bar}"; done 
    $ ls 
    bar1.md bar10.md bar2.md bar3.md bar4.md bar5.md bar6.md bar7.md bar8.md bar9.md 

:

$ files=($(find ./test -name "*.md")) 
    $ for file in "${files[@]}"; do mv "$file" "${file/foo/bar}"; done 

또는 파이프 루프에 find의 ouptut :

$ find ./test -name "*.md" | for file in $(xargs -0); do mv "$file" "${file/foo/bar}"; done 
관련 문제