
イライラした大学の数学教授は、休日が少し安心感をもたらすことを願っています。
問題の結論:
Blackboard LMSから私たちのクラス(100人以上の学生)のためのファイルをダウンロードしました。一部の学生は複数のファイルを送信し、時にはPDF以外の形式で送信することもあります。各学生が提出したファイルをその学生の単一のPDFファイルにマージしたいと思います。現在、私はAcrobatを使用して手動でこれを行っています。これは非常に退屈な仕事です。
誰かが私を案内したり、これらのファイルをより自動的に魔法のように組み合わせることができるbashスクリプトを書くのを手伝ってくれることを願っています。
詳細
この学期には130人の学生がいます。彼らの最終的な書面による課題は、私たちの大学のBlackboard LMSを通じて提出されました。
Canvasとは異なり、Blackboardは教授が許可されているファイルの種類を指定/制限したり、送信されたファイルの数を制限したりすることはできません。 BlackboardはファイルをPDFに自動的にマージするオプションを提供しません。なぜできないの?わかりません。
ファイルはzipファイルとして保存され、解凍すると、ファイルは次の形式で単一のフォルダに保存されます。
<AssignmentName>_<Student1ID>_attempt_<datestamp>.txt
<AssignmentName>_<Student1ID>_attempt_<datestamp>_<SubmittedFile1>.jpg
<AssignmentName>_<Student1ID>_attempt_<datestamp>_<SubmittedFile2>.jpg
...
<AssignmentName>_<Student2ID>_attempt_<datestamp>.txt
<AssignmentName>_<Student2ID>_attempt_<datestamp>_<SubmittedFile1>.jpeg
<AssignmentName>_<Student2ID>_attempt_<datestamp>_<SubmittedFile2>.jpeg
...
etc.
.txt ファイルには、学生の提出に関する一般情報が含まれています。
はい
WrittenAssignment2_40012345_attempt_2021-12-13-20-36-46.txt
WrittenAssignment2_40012345_attempt_2021-12-13-20-36-46_IMG3047.jpg
WrittenAssignment2_40012345_attempt_2021-12-13-20-36-46_IMG3048.jpg
WrittenAssignment2_40012345_attempt_2021-12-13-20-36-46_IMG3049.jpg
WrittenAssignment2_40067890_attempt_2021-12-14-16-22-39.txt
WrittenAssignment2_40067890_attempt_2021-12-14-16-22-39_AssignmentDoc.pdf
WrittenAssignment2_40098765_attempt_2021-12-12-20-08-52.txt
WrittenAssignment2_40098765_attempt_2021-12-12-20-08-52_MyUploadPg1.pdf
WrittenAssignment2_40098765_attempt_2021-12-12-20-08-52_MyUploadPg2.pdf
WrittenAssignment2_40098765_attempt_2021-12-12-20-08-52_MyUploadPg3.pdf
...
多くの学生が1つのPDFファイルを正常に送信しましたが、多くの学生はそうではありませんでした。私は単一のPDFを提出するための指示を含む単一のマルチページPDFを提出するために様々なソーシャルエンジニアリングスキルを試しました。
私が望むのは、.txtファイルのリストを読んでから、関連するpdfまたはjpgの各セットを1つのpdfに結合して次のように出力することです。
<AssignmentName>_<Student1ID>_attempt_<datestamp>_COMBINED.pdf
これにより、学生ごとに1つのファイルを表示できます。とても感謝しています。
答え1
いいね 人々は自分の答えを投稿するのが嫌いですが、今朝それを見るのに約2時間を費やし、ここに私が思いついた内容があります。醜いが動作します。 Blackboardを使った教育に関する他の提案がある人はいますか?ありがとうございます。
#!/bin/bash
search_dir='./TestFiles'
n=1
for entry in "$search_dir"/*.txt
do
echo $n " Merging"
f="$(basename "$entry" .txt)"
for subfile in "$search_dir"/"$f"_*
do
echo $n " $subfile"
done
## First usd pdftk to combine any pdfs into a merged PDF
if compgen -G "${search_dir}/${f}_*.pdf" > /dev/null; then
echo "pattern exists!"
pdftk "$search_dir"/"$f"_*.pdf cat output "$search_dir"/"$f"__MERGED.pdf
echo "Merged PDFs"
fi
##If jpg or jpeg exists then combine to PDF using img2pdf
if compgen -G "${search_dir}/${f}_*.jp*" > /dev/null; then
echo "pattern exists!"
img2pdf "$search_dir"/"$f"_*.jp* --output "$search_dir"/"$f"__MERGED.pdf
echo "Merged JPGs"
fi
((n++))
done