88 lines
1.8 KiB
Bash
Executable file
88 lines
1.8 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
DRY_RUN=0
|
|
|
|
usage() {
|
|
cat <<'USAGE'
|
|
Usage: ./clean-latex-junk.sh [--dry-run]
|
|
|
|
Removes common LaTeX build byproducts from this repository, recursively.
|
|
Source files and PDFs are not removed.
|
|
|
|
Options:
|
|
--dry-run Print files that would be removed without deleting them.
|
|
-h, --help Show this help.
|
|
USAGE
|
|
}
|
|
|
|
for arg in "$@"; do
|
|
case "$arg" in
|
|
--dry-run) DRY_RUN=1 ;;
|
|
-h|--help) usage; exit 0 ;;
|
|
*) echo "Unknown option: $arg" >&2; usage; exit 2 ;;
|
|
esac
|
|
done
|
|
|
|
patterns=(
|
|
"*.aux"
|
|
"*.bcf"
|
|
"*.blg"
|
|
"*.fdb_latexmk"
|
|
"*.fls"
|
|
"*.lof"
|
|
"*.log"
|
|
"*.lot"
|
|
"*.nav"
|
|
"*.out"
|
|
"*.run.xml"
|
|
"*.snm"
|
|
"*.synctex.gz"
|
|
"*.toc"
|
|
"*.vrb"
|
|
"*.xdv"
|
|
)
|
|
|
|
files=()
|
|
while IFS= read -r -d '' file; do
|
|
files+=("$file")
|
|
done < <(
|
|
find "$ROOT" \
|
|
\( -path "$ROOT/.git" -o -path "$ROOT/.cursor" \) -prune \
|
|
-o -type f \
|
|
\( \
|
|
-name "${patterns[0]}" \
|
|
-o -name "${patterns[1]}" \
|
|
-o -name "${patterns[2]}" \
|
|
-o -name "${patterns[3]}" \
|
|
-o -name "${patterns[4]}" \
|
|
-o -name "${patterns[5]}" \
|
|
-o -name "${patterns[6]}" \
|
|
-o -name "${patterns[7]}" \
|
|
-o -name "${patterns[8]}" \
|
|
-o -name "${patterns[9]}" \
|
|
-o -name "${patterns[10]}" \
|
|
-o -name "${patterns[11]}" \
|
|
-o -name "${patterns[12]}" \
|
|
-o -name "${patterns[13]}" \
|
|
-o -name "${patterns[14]}" \
|
|
-o -name "${patterns[15]}" \
|
|
\) -print0
|
|
)
|
|
|
|
if ((${#files[@]} == 0)); then
|
|
echo "No LaTeX build byproducts found."
|
|
exit 0
|
|
fi
|
|
|
|
if ((DRY_RUN)); then
|
|
echo "Would remove ${#files[@]} LaTeX build byproduct(s):"
|
|
printf ' %s\n' "${files[@]#$ROOT/}"
|
|
exit 0
|
|
fi
|
|
|
|
printf 'Removing %s LaTeX build byproduct(s):\n' "${#files[@]}"
|
|
printf ' %s\n' "${files[@]#$ROOT/}"
|
|
rm -f -- "${files[@]}"
|
|
echo "Done."
|