Shell脚本文件复制检查器

时间:2017-07-10 14:07:04

标签: bash file sh checksum

我使用find . -name \*.%ext% -print0 | xargs -I{} -0 cp -v {} %File%s命令在Drobo上复制并重新排序了近1TB的文件。我需要确保正确复制所有文件。这就是我到目前为止所做的:

#!/bin/sh
find . -type f -exec basename {} \; > Filelist.txt
sort -o Filelist.txt Filelist.txt
uniq -c Filelist.txt Duplist.txt

我需要找到一种方法来获取每个文件的校验和,并确保所有文件都是重复的。源文件夹与副本位于同一目录中,其安排如下:

_Stock
  _Audio
  _CG
  _Images
  _Source (the files in all other folders come from here)
  _Videos

我正在研究OSX。

1 个答案:

答案 0 :(得分:0)

#!/bin/sh
find . \( ! -regex '.*/\..*' \) -type f -exec shasum {} \; -exec basename {} \; | cut -c -40 | sed 'N;s/\n/ /' > Filelist.txt
sort -o Filelist.txt Filelist.txt
uniq -c Filelist.txt Duplist.txt
sort -o Duplist.txt Duplist.txt

regex表达式删除隐藏文件,shasumbasename参数在文本文件中创建两个单独的输出,因此我们|到cut然后sed合并输出,以便sortuniq命令可以解析它们。这个剧本很乱,但它完成了很好的工作。