我有一个文件列表来替换运行此命令的第一行
find . -type f -name ".txt"
我想用这个文本“第1行”
替换找到的文件的第一行进行我的研究我发现了一种用
删除第一行的方法ex -sc '1d|x' file.txt
然后用
预先添加一个文件echo "line 1"|cat - file.txt > out && mv out file.txt
但我不知道如何删除第一行并为每个找到的文件添加前缀
答案 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