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 回车 就能 结束输入

posted @ 2022-02-16 09:38  ifnk  阅读(361)  评论(0编辑  收藏  举报