linux 多文件 编辑 (sed)
根据名称过滤文件
$ find . -type f | grep pv
./pv/user-pv.yaml
./pv/post-pv.yaml
./pv/comment-pv.yaml
./pv/dtm-pv.yaml
这样就 找到当前目录 . 以及 递归子目录 的所有 包含 pv 的 文件 了
利用 xargs 命令 对多个文件 进行操作
find -type f | grep pv | xargs sed -i 's/hostPath/local/g'
通过 xargs 配合 sed 命令 将 包含 pv 的 所有文件 里面 的 hostPath 替换成 local
xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。
xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。
利用 tee 命令 对多个文件 结尾 追加内容
$ cat <<EOF | tee -a $(find -type f | grep pv)
pipe heredoc> dudu
pipe heredoc> EOF
dudu
$ cat pv/comment-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: comment-pv
labels:
type: local
spec:
storageClassName: local-storage # sc 名称
capacity:
storage: 10Gi
accessModes: # 卷可以被一个节点以读写方式挂载
- ReadWriteOnce
local: # 节点上面 挂在 pv 的 路径
path: "/mnt/data"
dudu # 可以看到 dudu 已经被附加到 文件末尾了
tee 命令
-a或--append 附加到既有文件的后面,而非覆盖它.
$(find -type f | grep pv)
找到 所有 包含 pv 的文件 然后 做为变量 给 tee 命令
cat <<EOF
命令 用来 手动 输入 要附加的内容 ,这里 我手动输入了 dudu ,你也可以 输入 多行 更多 内容 再 敲 EOF 回车 就能 结束输入