다음과 같은 디렉토리에 파일 목록이 있습니다.
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