কীভাবে ফাইলগুলিতে অনন্য সামগ্রী রয়েছে তা পরীক্ষা করবেন?
if diff "$file1" "$file2" > /dev/null; then
...
ডিরেক্টরিতে আমরা ফাইলগুলির তালিকা কীভাবে পেতে পারি?
files="$( find ${files_dir} -type f )"
আমরা সেই তালিকা থেকে যে কোনও 2 ফাইল পেতে পারি এবং তাদের নাম আলাদা এবং সামগ্রীগুলি একই কিনা তা পরীক্ষা করতে পারি।
#!/bin/bash
# removeDuplicates.sh
files_dir=$1
if [[ -z "$files_dir" ]]; then
echo "Error: files dir is undefined"
fi
files="$( find ${files_dir} -type f )"
for file1 in $files; do
for file2 in $files; do
# echo "checking $file1 and $file2"
if [[ "$file1" != "$file2" && -e "$file1" && -e "$file2" ]]; then
if diff "$file1" "$file2" > /dev/null; then
echo "$file1 and $file2 are duplicates"
rm -v "$file2"
fi
fi
done
done
উদাহরণস্বরূপ, আমরা কিছু dir আছে:
$> ls .tmp -1
all(2).txt
all.txt
file
text
text(2)
সুতরাং 3 টি অনন্য ফাইল রয়েছে।
স্ক্রিপ্টটি চালাতে দাও:
$> ./removeDuplicates.sh .tmp/
.tmp/text(2) and .tmp/text are duplicates
removed `.tmp/text'
.tmp/all.txt and .tmp/all(2).txt are duplicates
removed `.tmp/all(2).txt'
এবং আমরা কেবল 3 টি ফাইল ফাঁস পেয়েছি।
$> ls .tmp/ -1
all.txt
file
text(2)