我有多個目錄中的照片。我想用jpegtran(命令行工具)recursivly通過每一個,對其進行優化,並保存(覆蓋它)如何遞歸使用JpegTran(命令行)來優化子目錄中的所有文件?
,如果他們都在一個文件夾中我用這個
for JPEG in *.jpg ; do jpegtran -optimize $JPEG > $JPEG; done
但我不能得到它的工作遞歸和覆蓋相同的文件(而不是一個新的文件名)
任何提示?
我有多個目錄中的照片。我想用jpegtran(命令行工具)recursivly通過每一個,對其進行優化,並保存(覆蓋它)如何遞歸使用JpegTran(命令行)來優化子目錄中的所有文件?
,如果他們都在一個文件夾中我用這個
for JPEG in *.jpg ; do jpegtran -optimize $JPEG > $JPEG; done
但我不能得到它的工作遞歸和覆蓋相同的文件(而不是一個新的文件名)
任何提示?
如何使用find
命令:
find /your/dir -name '*.jpg' -exec echo jpegtran -optimize {} \;
運行的命令,如果你喜歡的輸出,除去echo
執行它。
它通常是更容易了一大堆使用找到在這種情況下,因爲你想要做什麼是對一些文件名行爲。 找到實用程序會給你這些名字。假設你有GNU(甚至可能是BSD)工具,下面的例子將說明這種常見的情況。
例如:
$ find ~/images/wallpapers/TEMP/ -type f -iname '*jpg' \
-exec sh -c 'jpegtran -outfile {}.out -optimize {}; mv {}.out {} ' \;
注
cat file > file
是不允許的,因爲同時REA ding和寫入同一個文件在bash中不是一個明確定義甚至支持的操作。
find /the/image/path -name "*.jpg" -type f -exec jpegtran -copy none -optimize -outfile {} {} \;
Oups下跌由錯誤投票 –
noooooooooo !!! ;) – Bas
jpegtran對標準輸出默認輸出。 –