假設我有以下檔案:
'CamScanner 11-06-2022 13.04.24_1.jpg' 'CamScanner 11-06-2022 13.04.24_20.jpg'
'CamScanner 11-06-2022 13.04.24_10.jpg' 'CamScanner 11-06-2022 13.04.24_21.jpg'
'CamScanner 11-06-2022 13.04.24_11.jpg' 'CamScanner 11-06-2022 13.04.24_22.jpg'
'CamScanner 11-06-2022 13.04.24_12.jpg' 'CamScanner 11-06-2022 13.04.24_23.jpg'
'CamScanner 11-06-2022 13.04.24_13.jpg' 'CamScanner 11-06-2022 13.04.24_24.jpg'
'CamScanner 11-06-2022 13.04.24_14.jpg' 'CamScanner 11-06-2022 13.04.24_3.jpg'
'CamScanner 11-06-2022 13.04.24_15.jpg' 'CamScanner 11-06-2022 13.04.24_4.jpg'
'CamScanner 11-06-2022 13.04.24_16.jpg' 'CamScanner 11-06-2022 13.04.24_5.jpg'
'CamScanner 11-06-2022 13.04.24_17.jpg' 'CamScanner 11-06-2022 13.04.24_6.jpg'
'CamScanner 11-06-2022 13.04.24_18.jpg' 'CamScanner 11-06-2022 13.04.24_7.jpg'
'CamScanner 11-06-2022 13.04.24_19.jpg' 'CamScanner 11-06-2022 13.04.24_8.jpg'
'CamScanner 11-06-2022 13.04.24_2.jpg' 'CamScanner 11-06-2022 13.04.24_9.jpg'
我想將這些檔案轉換為 pdf。這些檔案當前未按版本順序列出,所以這是我嘗試的:
convert $(ls -v) output.pdf
但是由于檔案名中的空格,這失敗了。我想將檔案名傳遞給convert按版本順序列出的檔案,并處理名稱中的空格。我已經看到了一些 SO 問題,他們在將檔案傳遞給轉換之前按某種順序對檔案進行排序,但這些問題都沒有在檔案名中包含任何空格。任何建議,將不勝感激 :)
編輯:我也試過:
ls -v | xargs -I% convert % output.pdf
但這只會將單個 jpg 轉換為 pdf。
uj5u.com熱心網友回復:
您需要參考每個檔案名。或者,試試這個。
readlines filearray <(ls -v)
convert "${filearray[@]}" output.pdf
一個更好的解決方案是在檔案名中使用機器可讀的日期和零填充的序列號,這將使它們對人類讀者明確,并且可以輕松解決排序順序問題。
for file in CamScanner\ ??-??-????\ ??.??.??_*.jpg; do
tail=${file##*_}
printf -v idx i ${tail%.jpg}
mv "$file" "CamScanner-${file:17:4}-${file:14:2}-${file:11:2}_${file:22:8}_$idx.jpg"
done
演示,各種:https ://ideone.com/Svl6uQ
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/528123.html
標籤:重击壳xargs
