매니페스트 스크립트를 만드는 방법

매니페스트 스크립트를 만드는 방법

다음과 같은 디렉토리에 파일 목록이 있습니다.

sales_01
product_01

저는 이 파일들을 같은 디렉토리에 암호화하고 있습니다. 이제 다음과 같은 파일 목록이 있습니다.

sales_01
product_01
sales_01.gpg
product_01.gpg

이제 내 문제는 이 열이 포함된 매니페스트 파일을 만들어야 한다는 것입니다. 큰따옴표가 나타나야 합니다.

"original_filename" "original_filesize" "encrypted_filesize" "md5sum(value of encrypted file)"

이 문제를 해결하도록 도와주세요.

답변1

귀하의 파일 이름에 개행 문자가 포함되어 있지 않다고 가정합니다.

리눅스의 경우:

#! /usr/bin/env bash
find /some/dir -type f -maxdepth 1 \! -name '*.gpg' | \
while read -r f; do
    esc=${f##*/}
    esc=${esc//\\/\\\\}
    esc=${esc//\"/\\\"}
    md5=$(md5sum "$f".gpg | awk '{print $1}')
    printf '"%s" "%d" "%d" "%s"\n' "$esc" $(stat -c %s "$f") $(stat -c %s "$f".gpg) "$md5"
done

*BSD에서:

#! /bin/sh
find /some/dir -type f -maxdepth 1 \! -name '*.gpg' | \
while read -r f; do
    esc=$(printf '%s\n' "$f" | sed 's#.*/##; s/\([\\"]\)/\\\1/g')
    md5=$(md5 -q "$f".gpg)
    printf '"%s" "%d" "%d" "%s"\n' "$esc" $(stat -f %z "$f") $(stat -f %z "$f".gpg) "$md5"
done

답변2

글쎄요, 예쁘지는 않지만 작동할 것입니다.

for i in $(ls | cut -d. -f1 | uniq); do if [ -f $i.gpg ]; then base_size=$(ls  -al $i| cut -d" " -f5); gpg_size=$(  ls  -al $i.gpg| cut -d" " -f5); md5_sum=$(md5sum $i.gpg | awk '{ print $1 }') ; echo  $i $base_size $gpg_size $md5; fi; done

관련 정보