如何使用“find”替换找到的每个文件的第一行

时间:2017-02-01 04:03:06

标签: linux

我有一个文件列表来替换运行此命令的第一行

find . -type f -name ".txt"

我想用这个文本“第1行”

替换找到的文件的第一行

进行我的研究我发现了一种用

删除第一行的方法
ex -sc '1d|x' file.txt

然后用

预先添加一个文件
echo "line 1"|cat - file.txt > out && mv out file.txt

但我不知道如何删除第一行并为每个找到的文件添加前缀

2 个答案:

答案 0 :(得分:4)

您可以使用exec

find . -name "*.txt" -exec sed -i .ORI '1s/.*/line 1/' {} \;

编辑保存备份为.ORI的文件。

答案 1 :(得分:0)

您可以将exec或xargs与find一起使用,但对于更复杂的命令,我总是在循环中运行处理。这样更清楚。这是你可以做的:

find . -type f -name '*.txt' | while read -r f; do
  ex -sc '1d|x' "$f"
  echo "line 1"|cat - "$f" > out && mv out "$f"
done