在ubuntu中编辑多个文件

时间:2014-02-04 14:52:57

标签: file editing

我有多个(超过100个).c个文件,我想从该文本所在的所有文件中更改特定文本。我正在使用ubuntu!

我该怎么做?(我更喜欢命令行而不是安装任何应用程序)

非常感谢!

2 个答案:

答案 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中

要在许多文件上运行,您可以执行以下操作:

  • 在您最喜欢的shell中使用foreach
  • 使用find这样的 find . -name "namepattern" -exec sed -i "sed-expr" "{}" \;
  • 使用这样的文件模式:sed -i“sed-expr”* pattern?.cpp

其中* pattern?.cpp只是以某些字符串开头的所有文件的名称模式,其中包含“pattern”,并且有任何字母和“.cpp”后缀