代码之家  ›  专栏  ›  技术社区  ›  jayko03

如何用shell脚本切掉所有子文件夹中文本文件中每一行的尾部?

  •  0
  • jayko03  · 技术社区  · 3 年前

    我有这个项目,

    Parent
      |-ChildA
      |-ChildB
      |- ....
      |-ChildZ
    

    每个子目录包含 requirements.txt 具有类似这样的python包信息,

    packageA==0.1
    packageB==5.9.3
    ...
    packageZ==2.9.18.23
    

    我想切断所有的版本信息,以便输出文件,

    packageA
    packageB
    ...
    packageZ
    

    我正在努力,

    cat requirements.txt | grep "==" | cut -d "=" -f 1
    

    但它不会迭代所有子目录,也不会保存。我该怎么做? 谢谢
    *我正在使用ubuntu20.4

    0 回复  |  直到 3 年前
        1
  •  1
  •   Pietro Pezzi    3 年前

    为了在所有 requirements.txt 文件,您需要遍历所有子目录,您可以使用以下简单脚本来完成:

    #!/bin/sh
    
    for child in ./Child* ; do
            cat "$child/requirements.txt" | grep "==" | cut -d "=" -f 1
    done
    

    现在,如果您希望“保存”每个文件的新版本,只需使用 > 操作人员使用这个操作符会覆盖你的文件,所以我建议你将输出重定向到一个新文件。

    以下是具有重定向输出的脚本:

    #!/bin/sh
    
    for child in ./Child* ; do
            cat "$child/requirements.txt" | grep "==" | cut -d "=" -f 1 > $child/cut-requirements.txt
    done