我运行批处理来调整大小并优化目录和子目录中的所有图像。不幸的是,Photoshop CC没有选项(我知道)覆盖现有图像,而是在处理图像并在其中写入处理过的图像的任何地方创建“JPEG”目录。图像数量相对较大(约2000个图像),并且它们被分成数百个子目录,因此手动移动图像以覆盖现有图像是不可能的。
如何将“JPEG”目录中的所有已处理图像上移一级以覆盖原始图像?关闭我认为我来了就是这样:
find . -type d -name "JPEG" -exec cd {} \; && find . -type f -name "*.jpg" -exec mv -v {} .. \;
...但是这会将所有图像从当前目录中删除。
有人可以解雇我吗?
答案 0 :(得分:1)
您的cd
仅影响更改为目录并死亡的子流程,而其父流程不受影响。
无论如何,切换到目录很少是必要或有用的;只需在mv
命令中直接使用路径。
find . -type d -name "JPEG" -exec mv -v {}/*.jpg {}/.. \;
(不是我现在可以测试的地方,但我猜通配符也需要一个shell:
find . -type d -name "JPEG" -exec sh -c 'mv -v {}/*.jpg {}/..' \;
显然未经测试。)
答案 1 :(得分:0)
在使用以下脚本之前备份您的映像目录。
CURRENT_DIR=$(pwd)
for x in $(find -type d -name 'JPEG')
do
cd $x && mv -v *.jpg .. # you can use `cp` instead of `mv`, then remove JPEG directory.
cd $CURRENT_DIR
done