![MacOS/Windows - 여러 zip에서 특정 .json 파일을 추출하고 .json 파일의 이름을 추출된 폴더로 바꾸는 방법](https://linux55.com/image/186661/MacOS%2FWindows%20-%20%EC%97%AC%EB%9F%AC%20zip%EC%97%90%EC%84%9C%20%ED%8A%B9%EC%A0%95%20.json%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%B6%94%EC%B6%9C%ED%95%98%EA%B3%A0%20.json%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EC%9D%B4%EB%A6%84%EC%9D%84%20%EC%B6%94%EC%B6%9C%EB%90%9C%20%ED%8F%B4%EB%8D%94%EB%A1%9C%20%EB%B0%94%EA%BE%B8%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
나는 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