Nếu bạn không tìm được giải pháp tốt hơn, bạn có thể thử kịch bản này:
#!/bin/bash
# NAME: pdfwalker
# AUTHOR: (c) 2014 Glutanimate <https://github.com/Glutanimate/>
# DESCRIPTION: Invoke one pdf file at a time
# DEPENDENCIES: mupdf
# LICENSE: GNU GPLv3 (http://www.gnu.de/documents/gpl-3.0.en.html)
############# Functions ###############
gui_notify(){
notify-send -i application-pdf "PDF Walker" "$1"
echo "$1"
}
arg_compose_filearray(){
# recursively add pdf files and folders in given arguments to array
unset Files
FileCountCurrent="1"
while IFS= read -r -d $'\0' File; do
if [[ ! "$(file -ib "$File")" == *application/pdf* ]]
then
echo "Error: '$File' is not a pdf file. Ignoring."
continue
fi
Files[FileCountCurrent++]="$File"
done < <(find "$@" -type f -name '*.pdf' -print0 | sort -z --version-sort)
FileCountTotal="${#Files[@]}"
}
arg_check(){
if [[ "$FileCountTotal" = "0" ]]; then
gui_notify "ERROR: No PDF files found."
echo "Exiting..."
exit 1
fi
}
############## Checks #################
arg_compose_filearray "$@"
arg_check
################ Main #################
FileCountCurrent="1"
for File in "${Files[@]}"; do
echo "Opening file $FileCountCurrent of $FileCountTotal:"
echo "$File"
mupdf "$File" > /dev/null 2>&1
((FileCountCurrent++))
done
echo "Done."
Cài đặt
Sao chép và dán nội dung của hộp mã ở trên vào một tệp văn bản trống mới, lưu nó và đánh dấu tập lệnh là có thể thực thi được thông qua menu Thuộc tính của trình quản lý tệp của bạn.
Đảm bảo cài đặt tất cả các phụ thuộc:
sudo apt-get install mupdf
Sử dụng
pdfwalker <pdf files or directories>
Ví dụ:
pdfwalker "~/Downloads/PDF" "~/Documents/Scans"
Tập lệnh sẽ đệ quy tìm tất cả các tệp PDF trong các thư mục đã chọn và mở từng tệp một mupdf
. Để chuyển sang tập tin tiếp theo trong dòng, chỉ cần đóng mupdf
cửa sổ hiện tại ( Q). Nếu bạn muốn thoát hoàn toàn tập lệnh, bạn có thể chấm dứt tập lệnh từ thiết bị đầu cuối thông qua CTRL+ C.