シェルスクリプトを書くことができれば、一つ一つの手作業は不要で、どんなに大量のファイルであろうと、自動的に処理してくれます。
よく利用される構文がfor文で、指定した回数だけ、同じ処理を繰り返します。どんなに大量の処理を命じても、文句一つ言わずに、また一つのミスも起こさず、プログラムされたとおりに律儀にやってのけます。
そのfor文の書式(構文)は、以下のとおりです。
for (変数) in (リスト)
do
(繰り返し処理)
done
for文による繰り返し処理の一例は、
⇒ こちらの記事をご覧ください。
上記のリストの箇所には、半角スペース区切りの固定文字列を並べる方法のほかに、パス名展開も利用できます。
パス名展開は、アスタリスク(*)やクエスチョン(?)を使って記述することで、複数のファイル名に置き換えてくれるシェルの機能です。
そのパス名展開も便利でいいのですが、もう一つ、私が便利だなぁって思っているのが、findコマンドを使う方法です。
findコマンドの書式は、
find (検索開始ディレクトリ) (検索条件) (アクション)
です。
検索開始ディレクトリを起点として、検索条件を満たすファイルを探し、アクションを実行します。
検索条件を自由に指定できるから、処理したい対象ファイルを任意に選ぶことができます。
この方法によって、大量のPDFファイルすべてに、パスワードを設定したことがあります。
その記事は、
⇒ こちらをご覧ください。
参考までに、そのときのシェルスクリプトを再掲します。
#!/bin/bash
# PDFファイルに設定するパスワード
password="HOGEHOGE"
# ディレクトリ内のPDFファイルのリストを取得
pdf_files=$(find /home/goosyun/ドキュメント -type f -name "*.pdf")
# ループを使用して各PDFファイルにパスワードを設定
for file in $pdf_files; do
# ファイル名を取得
filename=$(basename "$file")
# パスワード設定済みPDFファイルの出力先を指定
output_file="/home/goosyun/ドキュメント/PasswordPDF/${filename%.pdf}_protected.pdf"
# PDFtkを使用してパスワードを設定
pdftk "$file" output "$output_file" user_pw "$password"
# 作業完了のメッセージ表示
echo "パスワードを設定しました: $output_file"
done
シェルスクリプトに関しては、まだまだ初学者の段階だと思うのですが、それでも、一通りの記述ができるようになって、処理自動化の恩恵に浴しています。
残念に思えるのは、こんなにも便利なのに、なぜもっと若いうちに関心が向かなかったのだろうか、ということです。初老のこの年になって身につけても、宝の持ち腐れですわな。
それでは、また次の記事で
■■■■ goosyun ■■■■
最近の「Ubuntu」カテゴリーもっと見る
最近の記事
カテゴリー
バックナンバー
人気記事