我有一个变量,用于表示在某个目录中发现的重复文件
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