Shell

文件名中出現 img2pdf 和空格問題

  • October 26, 2015

我正在嘗試將一堆 jpeg 文件轉換為 pdf 文件。

當我輸入帶引號的文件名時,一切都很好:

$ img2pdf "./Page 001.jpg" "./Page 002.jpg" -o book.pdf

當我使用萬用字元時,我從 img2pdf 收到一個錯誤,提示它得到“./Page”而不是“./Page 001.jpg”:

IO錯誤:

$$ Errno 22 $$無效模式 (‘rb’) 或文件名:’"./Page’ 這是我使用的命令:

$ img2pdf `find . -name "Page*.jpg" -printf "\"%p\" "` -o book.pdf

可能會出什麼問題?

謝謝你的幫助

我想您在 bash 中,所以 … bash 會將某些字元解釋為分隔符。它取決於 $IFS(內部欄位分隔符)環境變數的內容,其預設值為空格(空格、製表符和換行符)。因此,當它在您的文件名中找到一個空格字元時,它將被解釋為一個分隔符,並將文件名分成一個或多個部分(這取決於將找到多少個空格、製表符或新行)。

解決方案可能是將 $IFS 值更改為符合您需求的值。例如,在你的情況下,只有換行符應該被解釋為分隔符:

# first save current value
OLD_IFS=$IFS

# change value to something you need
IFS="\n"

# do what you need to do here
#############################

# restore default value of IFS
IFS=$OLD_IFS

有關更多詳細資訊,請參閱此文件 IFS 參考

編輯:

我剛剛用img2pdf做了一些測試。我有 101 張圖片,名為

name_0.png, name_1.png, name_2.png, …, name_100.png

把它們放在一個 test.pdf 文件中,我使用了這個命令 img2pdf -o test.pdf name_{0..100}.png

這沒有問題。然後我對名稱中帶有空格的文件進行了另一次測試,例如:

名稱 0.png, 名稱 1.png, 名稱 2.png, …, 名稱 100.png

和命令是(空格字元由反斜杠轉義): img2pdf -o test.pdf name\ {0..100}.png

我希望這能幫到您。

引用自:https://unix.stackexchange.com/questions/238574