string - 在bash中循环查找结果
问题描述
我想遍历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的一部分。
推荐阅读
- android - QRScanner - 扫描路由器后导航不起作用
- php - 是否可以在仅数字的值上注入 sql?
- python - 如果图像包含特定颜色,则裁剪图像的线条
- mysql - 错误代码:1062。密钥“PRIMARY”的重复条目“2018-11-17 20:27:14”
- python-3.x - Python解释器在接收输入后关闭
- python - 防止短信验证滥用
- sql - AlwaysOn 可用性组存储
- android - 解决 RecylcerView 中 toLowerCase() 空指针异常的最佳解决方案
- ios - 如何使preferredStatusBarStyle 成为一个函数
- android - 无法播放此视频