linux - 使用 find 使用随机字符递归地重命名文件
问题描述
我有一个 IP 摄像机,它可以拍摄快照并将这些快照嵌套到多个目录中。子目录看起来像这样。
/cam_folder
|--Date
|----Hour
|------Minute
|-------->file1
|-------->file2...etc
|------Minute
|-------->file1...etc
由于它存储文件的方式,存在大量子目录,因为它将这些快照放置在 Date/Hour 目录的 Minute 目录中。
无论如何,还有其他类型的文件混在一起,但我知道如何使用 find 来查找我需要的所有 .jpg:
find /cam_folder/ -type f -name '*.jpg'
但我需要做的是将所有 .jpg 文件重命名为随机字符。我能够在 bash 脚本中的单个目录中找到它:
for file in *.jpg; do
new_file="$(mktemp XXXXXXXX.jpg)"
mv -f -- "$file" "$new_file"
done
我的问题是如何将这些联系在一起?我猜我需要使用 find 将这些输入到 bash 脚本中?
有没有更简单的方法可以在我走的时候递归地重命名一个目录?
解决方案
find /cam_folder/ -type f -name '*.jpg' -exec sh -c '
for f; do
mv -f -- "$f" "${f%/*}/$(mktemp -u XXXXXXXX.jpg)"
done' _ {} +
推荐阅读
- java - 如何从java中的文本文件中读取从jmeter传递的动态值?
- sql - 是否有可能获得 varchar 的唯一数值?
- rust - 如何在 Rust 中实现异步 Drop?
- google-maps - Google Places API 是否可以通过 maps.google.cn 域使用?
- vue.js - VueJS使用v-html在html字符串中渲染属性
- python - 使用 OR 基于两列过滤数据框
- python - 在 Apache Airflow 中,如何将脚本设置为任务?
- android - 如何在片段java中使按钮在onCreateView函数之外可点击
- python - 当成员不在 JSON 文件中时,Discord.py 机器人无法发送消息
- html - 在 optgroup 中选择 optgroup 在 vuejs 中不起作用?