我想遍历jpg文件,find
用来定位它们。
结果是包含./
前面的完整路径名。我想删除替换./
,./newsubdir/
以便我可以将其用作进程中的输出文件名,使用相同的文件夹结构在newsubdir 中创建原始文件的修改副本。
这是我尝试过的。
#!/bin/bash
find . -type f -name '*jpg'
for file do
echo ${file:1}
done
然而,子串提取似乎根本不起作用。是否有原因或不同的方式来做到这一点。对Bash非常陌生。
作为最终结果,我想要这样的事情。试图对一堆图片进行平方,但保持文件夹结构。
#!/bin/bash
find . -type f -name '*jpg'
for file do
convert '$file[2048x2048]' -gravity center -extent 2048x2048 "./newsubdir${file:1}"
done
你很接近!更接近原始代码(从而避免启动不必要的外壳程序):
#!/bin/bash
find . -type f -name '*.jpg' -exec bash -c '
for file do
convert "$file[2048x2048]" -gravity center -extent 2048x2048 "./newsubdir${file:1}"
done
' _ {} +
...或者,使用您的原始外壳并-exec
完全避免:
#!/bin/bash
while IFS= read -r -d '' file; do
convert "$file[2048x2048]" -gravity center -extent 2048x2048 "./newsubdir${file:1}"
done < <(find . -type f -name '*.jpg' -print0)
这些模式以及更多模式是UsingFind 的一部分。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句