ページ番号に基づいてPDFファイル名を一括変更します。

ページ番号に基づいてPDFファイル名を一括変更します。

PDFファイル形式の論文がたくさんあります(同じフォルダに異なる種類のファイルもあります)。パターンを使って名前を変更したい。

<current file name>[<number of pages>].pdf

しかし、何度も試したところ、最後に重複したページ番号を持つ間違ったファイル名がたくさんありました。例えば、

Madsen - 分類[48][48].pdf

だから私はこう考えました。

  1. すべてのファイル名をクリーンアップし、末尾の括弧に現れる数字をすべて削除します。たとえば、上記のファイルの名前を次のように変更する必要があります。

Madsen-分類.pdf

  1. [<number of pages>]最後に挿入したすべてのファイルの名前を変更します。

[<number of pages>]この情報がないため、PDFファイルから読む必要があります。

ベストアンサー1

これは元の問題を完全に解決する簡単な方法です。 1行で書くこともできますが、この構文を使用すると読むことができます。

#!/bin/bash
for F in "$@"
do
echo mv "$F" "${F%.pdf}[$(pdfinfo "$F" | awk '/^Pages/{print $NF}')].pdf"
done
$ ls *pdf
aosa-bash.pdf  article.pdf  bash.pdf  bashref.pdf  rose94.pdf
$ find . -name \*.pdf -exec ./pdf.sh {} +
mv ./article.pdf ./article[11].pdf
mv ./bashref.pdf ./bashref[172].pdf
mv ./bash.pdf ./bash[75].pdf
mv ./aosa-bash.pdf ./aosa-bash[14].pdf
mv ./rose94.pdf ./rose94[13].pdf
$

提案された名前の変更に満足している場合は、mvすべてのコマンドをシェルウィンドウに貼り付けるか、スクリプトを変更して簡単echo mvですmv

おすすめ記事