我有一个文件夹,里面包含一些文件夹。每个文件夹中都有一些bmp
文件。我想进入每个目录,将bmp
图像转换为pgm
格式并删除原始bmp
文件,然后对下一个目录重复此操作。
例如文件夹是
.
..
folder-a
folder-b
我想要使用的命令是:
~/folder-a$ mogrify -format pgm *.bmp && rm *bmp
是否可以使用单个命令来执行此操作,例如将ls
结果通过管道传输到mogrify
命令中?而不用费心使用 shell 脚本?
答案1
find . -name "*.bmp" -exec mogrify -format pmg {} \; -exec rm {} \;
应从顶层文件夹执行此操作。仅当第一个命令成功时,才会执行第二个命令。
如果您想执行这两个命令,即使第一个命令没有成功,您也必须:
find . -name "*.bmp" \( -exec mogrify -format pmg {} \; -o -exec true \; \) -exec rm {} \;
答案2
这应该可行。
for f in `ls`; do
cd $f
mogrify -format pmg *.bmp && rm *bmp
cd ..
done
或者用一行代码:
for f in `ls`; do cd $f; mogrify -format pmg *.bmp && rm *bmp; cd ..; done