1

我需要获取目录中的所有 jpg 文件,并对每个文件执行以下命令:

mycommand -in <imagebasename>.jpg -out <imagebasename>.tif --otherparam paramvalue

我想过:

find . -name "*.jpg" -exec mycommand -in {} -out {}.tif --otherparam paramvalue\;

但这会将“./<imagebasename>.jpg”之类的内容传递给 mycommand。我只需要传递 <imagebasename> 。

我不需要递归处理目录。

4

1 回答 1

3

尝试:

find . -name "*.jpg" -exec sh -c 'mycommand -in $0 -out "${0%.*}.tif" --otherparam paramvalue' {} \;

这会将表单的命令传递mycommand -in <imagebasename>.jpg -out <imagebasename>.tif --otherparam paramvalue-exec.

编辑:对于删除领先./,你可以说:

find . -name "*.jpg" -exec bash -c 'f={}; f=${f/.\//}; echo mycommand -in "${f}" -out "${f%.*}.tif" --otherparam paramvalue' {} \;

(请注意,解释器-exec已更改。)

于 2013-08-07T08:29:11.183 回答