我正在处理布谷鸟沙箱导出的数据,每个 Zip 文件下都有 report.json 文件
例如 > 123456.zip 每个 zip 都有 zipfile/reports/report.json 中的文件
我的文件夹中有多个 zip 文件,我希望将该 zip 文件命名为 zipfilename.json。
我尝试了很多方法但都失败了
这是我正在尝试的代码
#! /bin/bash
mkdir -p "DESTDIR"
for i in *.zip ; do
unzip "$i" $i/reports/report.json -d "DESTDIR"
mv "DESTDIR/reports/report.json" "DESTDIR/$(basename "$i" .zip)_THEFILE"
done
我得到的只是这个输出,显示该文件不存在
(base) s@Sais-MBP Downloads % sh script.sh
Archive: 1959098.zip
caution: filename not matched: 1959098.zip/reports/report.json
mv: rename DESTDIR/THEFILE to DESTDIR/1959098_THEFILE: No such file or directory
Archive: 1959100.zip
caution: filename not matched: 1959100.zip/reports/report.json
mv: rename DESTDIR/THEFILE to DESTDIR/1959100_THEFILE: No such file or directory
非常感谢任何帮助,因为过去几天我无法取得任何进展。
答案1
只是 shell 脚本文件中的一些错误。我将其修复为以下代码(您可以使用bash-x如果需要的话可以调试和定制更多)
bash -x test.sh
笔记:运行相同的代码Windows 和 Mac 操作系统我认为你应该在 Windows 中使用 Linux WSL 或替换解压经过7z在下面的代码中:
#! /bin/bash
#
# save this file as test.sh
#
mkdir -p "DESTDIR"
for ZIPFILE in *.zip ; do
NAME="${ZIPFILE%.*}"
mkdir -p "DESTDIR/$NAME"
unzip -j $ZIPFILE reports/report.json -d "DESTDIR/$NAME/"
mv "DESTDIR/$NAME/report.json" "DESTDIR/$NAME.json"
done