我可以使用sed来recursion地查找和replace一堆文件中的string。 像这样:
find -name "*.py" -not \( -name .svn -prune \) -type f -print0 | xargs -0 sed -i 's/cat/dog/g'
然而,有没有办法在文件和实际文件名中searchstring?
如果在文件名中find该string,则用新stringreplace文件名中的string。
如果实际文件中的string,则用新stringreplacestring。
当然,要recursionsearch。
有任何想法吗?
我不知道如何一次完成这个任务,但是它可以很容易地作为一个小脚本完成,例如(轻度testing):
find -name "*.py" -not \( -name .svn -prune \) -type f -print0 \ | while read -r -d $'\0' filename; do sed -i 's/cat/dog/g' "$filename" echo "$filename" | grep -q "cat" \ && mv "$filename" "${filename/cat/dog}" done