Ubuntu 重命名文件夹和子目录中不匹配 sha1sum 的每个文件的脚本

Ubuntu script to rename every file in folders and sub directories NOT matching sha1sum

在 Ubuntu 我有 运行 这个命令。

 sha1sum /home/abcd/random/1/1.mp4

所以我有以下目录

/home/abcd/

此文件夹内有子文件夹

/home/abcd/1
/home/abcd/2
etc
etc

这些子文件夹中充满了视频文件 .mp4 扩展名

他们有多个文件,文件哈希为 3c72363260a32992c3ab2e3a5e9b8cf082e02eac sha1sum 我想 将所有不匹配此文件的文件重命名为

vid_1.mp4
vid_2.mp4
etc
etc

我怎样才能做到这一点?

伪代码

  • 查找 mp4
  • sha1对它们求和(输出<sha1sum> <filename>
  • 传行不3c72363260a32992c3ab2e3a5e9b8cf082e02eac
  • 将行从 <sha1sum> <filename> 更改为 mv "<filename>" "vid_<filename"
  • 执行行

代码

cd /home/abcd
find . -name "*.mp4" -print0 |
  xargs -r -0 sha1sum |
  awk '!="3c72363260a32992c3ab2e3a5e9b8cf082e02eac"' |
  sed 's/^[^\s]\+\s\+\(.*\)/mv "" "vid_"/' |
  sh

您可以尝试使用嵌套 if 循环 for 循环

for f in /home/abcd/*; do
    i=$((i+1));
    sum=$(sha1sum "$f" | awk '{print }');
    if [[ "$sum" != 3c72363260a32992c3ab2e3a5e9b8cf082e02eac ]]; then
        mv "$f" "vid_$i.mp4"; 
    fi; 
done