Shell
文件名中出現 img2pdf 和空格問題
我正在嘗試將一堆 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
我希望這能幫到您。