【问题标题】:file path manipulation and archive it dynamically using shellscript文件路径操作并使用 shellscript 动态归档
【发布时间】:2021-10-11 10:56:08
【问题描述】:

生成的输出,但它正在增长列表。

  • /mnt/data/workspace/deploy/package/npm/v1/repo/*
  • /mnt/data/workspace/deploy/package/atom/v2/repo/*
  • /mnt/data/workspace/deploy/package/iterm/v4/repo/*
  • /mnt/data/workspace/deploy/package/vscode/v8/repo/*

我有如上生成的文件,但我需要对其进行操作,以便在用例之后使用它。

1) 需要将所有文件从 repo 移动到对应的 v 文件夹(删除 repo 文件夹但需要将其内容向上推)。

输出需要像

  • /mnt/data/workspace/deploy/package/npm/v1/*
  • /mnt/data/workspace/deploy/package/atom/v2/*
  • /mnt/data/workspace/deploy/package/iterm/v4/*
  • /mnt/data/workspace/deploy/package/vscode/v8/*

2) 将每个输出压缩到以其产品命名的单独文件中,并在另一个压缩文件中包含所有内容。

  • npm.zip
  • atom.zip
  • iterm.zip
  • vscode.zip &&
  • package.zip [所有内容都在一个文件中]

任务 1 的基本脚本

for i in `ls -d -1 "$PWD/"**/`
do
cd $i && cd ..
mv repo/* .
rm -rf repo
done

它可以工作,但看起来很丑。

我正在尝试获取基于产品名称生成的 zip 文件。我该怎么做?

【问题讨论】:

    标签: linux bash shell unix scripting


    【解决方案1】:

    首先,简化一下你所拥有的。

    for i in "$PWD"/**/; do # this will only be directory names
      cd "$i"/.. && mv repo/* . && rm -rf repo
    done
    

    但我认为我们可以改进它。

    base=/mnt/data/workspace/deploy/package
    for p in npm atom iterm vscode; do
      cd "$base/$p/" && mv repo/* . && rm -rf repo
    done
    cd "$base/"
    zip package *
    for p in npm atom iterm vscode; do zip "$p" "$p/"; done
    

    这是你想要的吗?

    【讨论】:

      猜你喜欢
      • 2021-12-18
      • 1970-01-01
      • 2013-02-04
      • 2014-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多