如何替换文件列表中包含的文件中的模式?

如何替换文件列表中包含的文件中的模式?

我有一个文本文件,fileslist其中包含文件名称列表,或者更确切地说,这些文件的相对路径及其来自某个父目录的名称。中的每一行只有一个文件fileslist。从该父目录中,我想对每个文件一一运行命令。此命令应在所有文件中搜索某个模式,并将其替换为另一种模式。每个文本文件可能包含也可能不包含该模式College Documents。我想将其替换为College_Documents.我怎样才能做到这一点?

答案1

我建议xargs这样做:

xargs sed -i 's/College Documents/College_Documents/g' < filelist

filelist这告诉 xargs 从(通常从 stdin 读取;我们给它文件的内容)读取其输入。它sed用尽可能多的文件填充的参数列表,执行例如:

sed -i 's/College Documents/College_Documents/g' file1 file2 file3 ...
sed -i 's/College Documents/College_Documents/g' filen filem fileo ...

答案2

经过一番研究,我发现这个命令非常适合我的目的。

cat fileslist | while read in; do sed -i 's/College Documents/College_Documents/g' $in; done

相关内容