首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在bash脚本中使用find exec时随机命名文件?

如何在bash脚本中使用find exec时随机命名文件?
EN

Stack Overflow用户
提问于 2019-03-04 17:15:01
回答 3查看 188关注 0票数 1

当涉及到快速转换一堆文件并随机重命名它们时,我使用了一个非常简单的方法,使用for循环:

代码语言:javascript
复制
for i in *; do convert [...] $i ../output/$RANDOM.jpg; done

就这么简单。在这里,imagemagick的细节并不重要。它的工作原理是预期的。这只是关于如何处理狂欢的事情。

现在我的当前情况--文件夹不仅包含照片,而且还包含其他照片本身的子文件夹。预期的行为再次是,所有照片被随机重命名,输出文件合并在一个文件夹中。

由于我不知道递归循环for的方法,所以这里使用了find构造。

代码语言:javascript
复制
find . \( -iname "*.jpg" -or -iname "*.png" \) -exec convert [...] {} ../output/$RANDOM.jpg  \;

的问题是,$RANDOM只被调用一次,所以它在整个过程中保持不变,图像被一次又一次地覆盖。因此,实际上输出文件夹只处理一个图像,处理最后一个图像。

因此,问题是:如何使$RANDOM变量与每个新文件一起更改?

亲切的问候!

EN

Stack Overflow用户

发布于 2019-03-04 17:27:32

把它扔进一个循环。

代码语言:javascript
复制
find . \( -iname "*.jpg" -or -iname "*.png" \) -type f -print0 |
  while read -d '' -r f 
  do convert [...] "$f" ../output/$RANDOM.jpg  # copied mostly from your find above
  done

如果您从未在文件名中嵌入换行符,则-print0read -d ''是不必要的。

票数 4
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54988294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档