【问题标题】:Please tell me in detail about the following Script请详细告诉我以下脚本
【发布时间】:2015-11-10 23:23:35
【问题描述】:

我想从位于特定目录中的所有文件中删除电子邮件 "sudar.dudi@in.xyz.com"。经过大量搜索后,我使用了以下命令。

这个命令的问题是,它会继续搜索所需目录以外的目录,并且由于这个命令,我的其他文件已损坏。

请帮我纠正这个问题:

rrcg0/utioi

(在 utioi 目录中是我的文件,文件具有特定名称 像 mpp.properties.JKH,mpp.properties.KJL,mpp.properties.KHF 同样)

yes n|for file in $(find . -type f)
    do
           sed 's/sudar.dudi@in.xyz.com//g' $file > $file.tmp
           mv $file.tmp $file
    done

【问题讨论】:

    标签: linux unix command aix


    【解决方案1】:

    让它更简单,尝试使用 find 的 exec 选项和 GNU sed 选项进行内联编辑

    find <absolute dir path> -name "*" -type f -exec sed -i '/hello/d' {} \;
    

    【讨论】:

    • 你能解释一下吗
    • -i sed 选项(GNU sed)将帮助您进行内联编辑 exec 帮助您执行您传递给它的命令 不确定 AIX 是否具有 GNU sed(检查 -i 选项是否为可用于 sed) 相关链接:unix.stackexchange.com/questions/111673/…stackoverflow.com/questions/7232797/…
    • 为什么我们使用'-name',然后符号“*”用于什么?
    • -type f 用于什么原因?
    • -type f 指定只查找文件而不是目录,-name 用于指定要查找的文件列表(模式匹配)
    【解决方案2】:

    如果您知道目录,则不需要find
    当你想检查 ls 给出的条目是否是一个文件时,你可以使用测试:

    mydir=rrcg0/utioi
    for file in ${mydir}/*
    do
       if [ -f "${file}" ]; then
          sed 's/sudar.dudi@in.xyz.com//g' $file > $file.tmp && mv $file.tmp $file
       fi
    done
    

    当您只需要属性文件时,您可以使用 for file in ${mydir}/*properties*
    我用过了 &&。这确保 mv 命令仅在重定向成功时执行。 我没有使用sed -i 选项,并不总是支持该选项。

    编辑:文件名中的空格怎么办? 当文件名中可能有空格时,必须更正上述脚本:

    sed 's/sudar.dudi@in.xyz.com//g' "$file" > "$file.tmp" && mv "$file.tmp" "$file"
    

    【讨论】:

    • if and fi 不在我的系统中...它说“如果未找到或未安装则手动输入)
    • 它们是 shell(sh、ksh 或 bash)的一部分。试试谷歌unix ifman test
    • 能否请您制作一些其他可以在 AIX 上运行的脚本,因为在我的系统中我没有安装“if”和“fi”。
    • 如果您输入if 并按回车键,您会得到什么?找不到命令(比您应该尝试ps 并查看您是否正在运行 ksh 或 bash),或者您会在新行上获得另一个提示(shell 等待您完成命令)。当您的系统不支持if时,您应该重新安装系统。
    • rdhtrans@citsdfr1:(/trans/utgil/mydir)->如果 >
    【解决方案3】:

    您也可以对现有文件进行更改,因为这样就无需移动文件。在 sed 命令中包含 -i。

    修改Walter A的代码

    mydir=rrcg0/utioi for file in ${mydir}/* do if [ -f "${file}" ]; then sed -i 's/sudar.dudi@in.xyz.com//g' $file fi done

    【讨论】:

      猜你喜欢
      • 2020-08-25
      • 2016-03-09
      • 2019-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-21
      • 2010-10-06
      • 1970-01-01
      相关资源
      最近更新 更多