如何比较同一目录中的重复文件并将它们硬链接在一起

如何比较同一目录中的重复文件并将它们硬链接在一起

我有一个变量,用于表示在某个目录中发现的重复文件

ddub=`find $1* -not -empty -type f -printf "%s\n" | sort -rn | uniq -d | xargs -I{} find -type f -size {}c -print0 `

然后,我循环遍历该目录,以将任何重复项的硬链接与原始文件进行比较

echo $ddub                              #Print the results

for i in $ddub; do
    for j in $ddub ; do
    if cmp -s "$i" "j" ; then
         ln $i $j
    elif ; 
         echo "csnt hardlink the files"
    fi

这里的问题是,它尝试硬链接列表中的每个文件,但这并不像我希望的那样工作。我想将独特的文件与其余文件分开,然后硬链接它们。

我如何进一步循环,以便仅硬链接列表中找到的类似 MD5sum 文件或具有相同大小的文件?

我得到的结果如下,这只是我创建的所有文件的列表。请帮我弄清楚如何进一步分离它们(注意我刚刚创建了随机文件)

ln ./test_dir/test_dir2/29.JPG.copy.copy.copy.copy./test_dir/test_dir2/29.JPG.copy.copy.copy./test_dir/test_dir2/29.JPG.copy.copy.copy.copy.copy./test_dir/29.JPG./test_dir/29.JPG.copy./test_dir/29.JPG.copy.copy./test_dir/test_dir2/23.JPG.copy.copy.copy.copy./test_dir/test_dir2/23.JPG.copy.copy.copy.copy.copy./test_dir/09.JPG.copy./test_dir/09.JPG./test_dir/09.JPG.copy.copy./test_dir/39.JPG./test_dir/39.JPG.copy./test_dir/test_dir2/22.JPG.copy.copy.copy.copy./test_dir/test_dir2/22.JPG.copy.copy.copy.copy.copy./test_dir/test_dir2/22.JPG.copy.copy.copy./test_dir/22.JPG./test_dir/22.JPG.copy.copy./test_dir/22.JPG.copy ./test_dir/test_dir2/29.JPG.copy.copy.copy.copy./test_dir/test_dir2/29.JPG.copy.copy.copy./test_dir/test_dir2/29.JPG.copy.copy.copy.copy.copy./test_dir/29.JPG./test_dir/29.JPG.copy./test_dir/29.JPG.copy.copy./test_dir/test_dir2/23.JPG.copy.copy.copy.copy./test_dir/test_dir2/23.JPG.copy.copy.copy.copy.copy./test_dir/09.JPG.copy./test_dir/09.JPG./test_dir/09.JPG.copy.copy./test_dir/39.JPG./test_dir/39.JPG.copy./test_dir/test_dir2/22.JPG.copy.copy.copy.copy./test_dir/test_dir2/22.JPG.copy.copy.copy.copy.copy./test_dir/test_dir2/22.JPG.copy.copy.copy./test_dir/22.JPG./test_dir/22.JPG.copy.copy./test_dir/22.JPG.copy
[asonganyif@ccad2 November_2016]$ vim bashScripass.sh

答案1

您无法将文件与[ a = b ].使用cmp

if cmp -s "$i" "$j"; then
# rest as you were

相关内容