私はCuckoo Sandboxからエクスポートされたデータで作業しており、各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
シェルスクリプトファイルにいくつかのエラーがあります。次のコードで問題を解決しました。バッシュ-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