パソコン悪戦苦闘記録

findコマンドで大量のファイル処理の自動化

 大量のファイルを処理対象とするとき、Linuxのシェルスクリプトが便利です。
 シェルスクリプトを書くことができれば、一つ一つの手作業は不要で、どんなに大量のファイルであろうと、自動的に処理してくれます。

 よく利用される構文が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
名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「Ubuntu」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事