我有多个(超过100个).c
个文件,我想从该文本所在的所有文件中更改特定文本。我正在使用ubuntu!
我该怎么做?(我更喜欢命令行而不是安装任何应用程序)
非常感谢!
答案 0 :(得分:1)
OLD=searchtext
NEW=replacedtext
YOURFILE=/path/to/your/file
TMPFILE=`mktemp`
sed "s/$OLD/$NEW/g" $YOURFILE > $TMPFILE && mv $TMPFILE $YOURFILE
rm -rf $TMPFILE
您还可以使用find
查找文件:
find /path/to/parent/dir -name "*.c" -exec sed 's/$OLD/$NEW/g' {} > $TMPFILE && mv $TMPFILE {} \;
find /path/to/parent/dir -name "*.c"
在*.c
下找到名称为/path/to/parent/dir
的所有文件。 -exec command {} \;
在找到的文件中执行command
。 {}
代表找到的文件。
答案 1 :(得分:0)
你应该看看sed,这样可以用其他文字替换一些文字(等等)
例如
sed s/day/night/ oldfile newfile
将在oldfile中使用“night”更改“day”的所有出现,并将新的更改版本存储在newfile中
要在许多文件上运行,您可以执行以下操作:
find . -name "namepattern" -exec sed -i "sed-expr" "{}" \;
其中* pattern?.cpp只是以某些字符串开头的所有文件的名称模式,其中包含“pattern”,并且有任何字母和“.cpp”后缀