2012-11-22 46 views
2

我經常發現自己想要合併我考慮到一個圖像兩個最新截圖。我想使用ImageMagick在一個命令行中通過xargs(?)合併按日期排序的兩個最新文件。管兩個文件名(含空格)通過xargs的一個命令

到目前爲止,我有以下,但它有一個處理文件名中的空格麻煩。我似乎無法弄清楚如何完成這件事。

ls -t | head -n 2 | sed 's/\n/\x0/' | xargs -0 -n 2 -I images convert images -append -quality 75 combined.jpg 

回答

1

將sed命令更改爲sed 's/.*/"&"/'

或者使用純bash的解決辦法:在 你的管道更換sed命令使用此代碼:

while read x; do echo "'$x'"; done 

並從xargs的的-0選項。

0

編輯: 起初我沒有看到你需要按最新文件的順序對它們進行排序,並且我使用find提供了一個答案。

不幸的是,發現不允許對文件進行排序。需要一些解決方法才能正確排序。

這裏是主張使用查找時您的文件進行排序:

find -type f -printf '%T+_%p\n' | sort -r | head -n 2 | sed 's/[^_]*_//' | tr '\n' '\0' | xargs -0 -n 2 -I images convert images -append -quality 75 

注:此命令會工作,即使你有「_」或空格在文件名中。

1

如果你已經安裝了GNU並行:

ls -t | head -n 2 | parallel -n 2 convert {} -append -quality 75 combined.jpg 

它的設計與空間,」,「等奇怪的字符妥善處理

見介紹視頻http://pi.dk/1

相關問題