使用查找以随机字符的方式递归重命名文件

时间:2019-08-28 16:40:32

标签: linux bash command-line scripting

我有一个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脚本中,我猜呢?

有没有更简便的方法来随便去递归地重命名目录?

2 个答案:

答案 0 :(得分:1)

find /cam_folder/ -type f -name '*.jpg' -exec sh -c '
for f; do
  mv -f -- "$f" "${f%/*}/$(mktemp -u XXXXXXXX.jpg)"
done' _ {} +

find
Shell Command Language § The for Loop
Shell Command Language § Parameter Expansions

答案 1 :(得分:0)

我认为符合您的需求

x(val)