有时会发生由于某种原因复制许多文件(即外部硬盘驱动器;使用Nautilus文件管理器)崩溃的过程。如果我再次启动它,我会忽略已经存在的文件,尽管其中一些文件没有100%复制。因此,属性窗口显示源文件夹中的“460文件(225 GB)”和目标文件夹中的“460文件(222 GB)”...
我现在如何找出部分复制的文件(可能使用ls
和diff
)?
答案 0 :(得分:3)
如果您有rsync
可用,则可以在两个本地目录之间正常工作。
答案 1 :(得分:2)
for f1 in dir1/*
do
f2="dir2/${f##*/}"
if [[ $(sum "$f1") != $(sum "$f2") ]]
then
printf 'File %s does not match %s\n' "$f1" "$f2"
fi
done
或者您可以将其用作测试:
if ! diff -q "$f1" $f2" >/dev/null
答案 2 :(得分:0)
我修改了丹尼斯的代码。它比较文件大小。比较校验和更快但不安全。
source=/???
target=/???
for i in "$source"/*
do
f1=`stat -c%s $i`
f2=`stat -c%s $target/${i##*/}`
if [ "$f1" = "$f2" ]; then
echo "$i" "$f1" VS "$target/${i##*/}" "$f2" "====>>>" "OK"
else
echo "$i" "$f1" VS "$target/${i##*/}" "$f2" "====>>>" "BAD"
fi
done