我有一个文本文件,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