| Español | English |
Es normal encontrarse con archivos pdf con nombres de archivo tan descriptivos como 1606152010.pdf ...
Si el autor asignó un título más apropiado en el campo Title de los metadatos del documento pdf , es posible renombrar éste de forma automática, vamos a ver cómo.
En Debian puedes encontrar diversas herramientas | |
|---|---|
|
Un título | ||
|---|---|---|
|
Saneando Es necesario asegurarse de que el nombre de archivo es seguro, | |
|---|---|
|
ya terminamos... | ||
|---|---|---|
# Rename |
📜
titlepdf.sh
Juntando todas las piezas,
#!/bin/bash
###
# titlepdf
#
# Rename pdf file as the title metadata.
# Makes or not the renaming without error code.
#
# Dependencies,
# file
# pdfinfo
#
# (c) 2016, xae.
#
# 20160221
###
declare -r SCRIPT=${0##*/}
# depends
# Verify if a dependencie is satisfied,
# if not returns 0.
function depends {
[ -e $1 ] ||
{
printf "%s\n" "$SCRIPT:$LINENO: $1. Not avalaible." >&2 ;
return 0;
}
return 1
}
# Usage
# Exits from script with error code 1
function usage {
printf "$1\nUsage:\n\ttitlepdf pdf_file\n\n" >&2
exit 1
}
# Dependencies
depends "/usr/bin/file" ||
depends "/usr/bin/pdfinfo" &&
exit 1
[ $# -eq 0 ] && usage
shopt -s extglob
for FILE in "$@";
do
# Test if input is valid
[[ "$(file -b "$FILE")" =~ 'PDF' ]] ||
continue
# Extract metadata
METADATA=$(pdfinfo "$FILE" 2> /dev/null) ||
continue
# Title
# No title tag
[ -z "${METADATA##*Title:*}" ] ||
continue
# Extract
TITLE="${METADATA#Title:*}"
TITLE="${TITLE%%[[.newline.]]*}"
# Trim
TITLE="${TITLE#${TITLE%%[![.space.]]*}}"
# No title
[ -z "${TITLE}" ] &&
continue
# Make path safe
REPLACE_CHAR=_
TITLE="${TITLE//[![:alnum:]]/"$REPLACE_CHAR"}"
# Remove replace char runs
TITLE="${TITLE//+("$REPLACE_CHAR")/"$REPLACE_CHAR"}"
# Rename
mv -i -- "$FILE" "$TITLE".pdf
done
exit 0
∎
| English | Español |
Often you get pdf files named like 1606152010.pdf ,
a very illustrative title ...
If the author gave a better name in the Title metadata field of the pdf document, renaming the file would be possible , let's do it...
Debian provides several tools to manage | |
|---|---|
|
A title | ||
|---|---|---|
|
Sanity check It is a must to test that filenames are secure, | |
|---|---|
|
finishing up... | ||
|---|---|---|
# Rename |
📜
titlepdf.sh
All pieces together,
#!/bin/bash
###
# titlepdf
#
# Rename pdf file as the title metadata.
# Makes or not the renaming without error code.
#
# Dependencies,
# file
# pdfinfo
#
# (c) 2016, xae.
#
# 20160221
###
declare -r SCRIPT=${0##*/}
# depends
# Verify if a dependencie is satisfied,
# if not returns 0.
function depends {
[ -e $1 ] ||
{
printf "%s\n" "$SCRIPT:$LINENO: $1. Not avalaible." >&2 ;
return 0;
}
return 1
}
# Usage
# Exits from script with error code 1
function usage {
printf "$1\nUsage:\n\ttitlepdf pdf_file\n\n" >&2
exit 1
}
# Dependencies
depends "/usr/bin/file" ||
depends "/usr/bin/pdfinfo" &&
exit 1
[ $# -eq 0 ] && usage
shopt -s extglob
for FILE in "$@";
do
# Test if input is valid
[[ "$(file -b "$FILE")" =~ 'PDF' ]] ||
continue
# Extract metadata
METADATA=$(pdfinfo "$FILE" 2> /dev/null) ||
continue
# Title
# No title tag
[ -z "${METADATA##*Title:*}" ] ||
continue
# Extract
TITLE="${METADATA#Title:*}"
TITLE="${TITLE%%[[.newline.]]*}"
# Trim
TITLE="${TITLE#${TITLE%%[![.space.]]*}}"
# No title
[ -z "${TITLE}" ] &&
continue
# Make path safe
REPLACE_CHAR=_
TITLE="${TITLE//[![:alnum:]]/"$REPLACE_CHAR"}"
# Remove replace char runs
TITLE="${TITLE//+("$REPLACE_CHAR")/"$REPLACE_CHAR"}"
# Rename
mv -i -- "$FILE" "$TITLE".pdf
done
exit 0
∎
Media
|
|
|
|---|