如何搜索零 kb 文件并找到更大的等效文件

如何搜索零 kb 文件并找到更大的等效文件

我的 Linux SAMBA 服务器出现问题,它损坏了我的一些照片(数十个目录中的数百个文件)。我有一台带有时间机器备份的 Mac,里面有很多原件。

通过在我的 Mac 上安装 SAMBA 共享,我可以搜索零 kb 文件

find /Volumes/Photos/ f -empty -not -path '*/\.*'

如何扩展此命令来搜索我安装的时间机器以查看是否有任何零 kb 文件具有未损坏的等效文件?

我想我需要一个 bash 脚本。或者也许是Python。

答案1

我只能在linux上测试以下内容,而不能在mac上测试,但我认为它没有使用任何非标准的东西。

-如果文件名以破折号开头或任何文件名包含换行符,则不起作用。

我从包含以下内容的目录开始:

$ find -type f | xargs du -h
4,0K    ./find_empty_dupes.sh
4,0K    ./sub/sub2/corrupt.txt
0   ./sub/corrupt.txt
0   ./sub/empty.txt

并运行以下脚本:

#!/bin/bash

find . -type f -empty | while IFS= read -r file; do
    if find . -name "$(basename "$file")" -not -empty | grep -q '.'; then
        echo "$file"
    fi
done

这是测试运行:

$ ./find_empty_dupes.sh 
./sub/corrupt.txt

相关内容