Chtěl jsem od chatGPT skript na porovnání souborů v adresářích, ale nejde to, ten robot je totálně tupý. Nezvládá elementární logické postupy. Zkoušel jsem to několikrát a pak vzdal. Takže snad mi tu může někdo poradit. Jde o to, že z těch dvou souborů file1 a file2 by se měly vodstranit ty přebývající soubory. Výsledný počet souborů má být stejný a stejné jména. Zajímá mě kolik těch redundantních souborů se odstranilo a pak mě zajímá porovnání data mezi soubory. A ještě je tam problém, že s tou relativní cestou se vypsala i ta část co tam nemá být. Protože každý adresář je někde jinde. A v těch file1 a file2
nemůže být tacesta k /usr/local/share/perl/5.30.0/OpenAI/API/lib/OpenAI/API ani "lib/OpenAI/API". V podstatě jsem chtěl jen porovnat duplicitní soubory a data těch souborů... A GPT je zkrátka tupý na takový věci. Nedokáže pochopit co chci. Kod převést do jiného jazyka by jakž takž zvládl. Zdá se mi tedy, že tam jsou dva problémy, cesta ve výstupu a že file1 a file2 nejsou odfiltrovaný aby byli kompatilibilní nebo konzistentní k porovnání.
#!/bin/bash
# Directory paths
path1="/usr/local/share/perl/5.30.0/OpenAI/API"
path2="/usr/local/share/perl/5.30.0/OpenAI/API/lib/OpenAI/API"
# Find files with identical names and sizes but different dates
# find "$path1" -type f -not -name "*.txt" -printf "%f %s %TY-%Tm-%Td %TH:%TM:%TS\n" | sort > file1
# find "$path2" -type f -not -name "*.txt" -printf "%f %s %TY-%Tm-%Td %TH:%TM:%TS\n" | sort > file2
find "$path1" -type f -printf "%P %s %TY-%Tm-%Td %TH:%TM:%.2TS\n" | sort > file1
find "$path2" -type f -printf "%P %s %TY-%Tm-%Td %TH:%TM:%.2TS\n" | sort > file2
# Compare files
comm -12 file1 file2 | while read line
do
name=$(echo "$line" | cut -d ' ' -f 1)
size=$(echo "$line" | cut -d ' ' -f 2)
date1=$(echo "$line" | cut -d ' ' -f 3-)
date2=$(grep "^$name $size " file2 | cut -d ' ' -f 3-)
if [ "$date1" \< "$date2" ]
then
echo "$path1/$name is older than $path2/$name ($date1 < $date2)"
# rm "$path1/$name"
elif [ "$date2" \< "$date1" ]
then
echo "$path2/$name is older than $path1/$name ($date2 < $date1)"
# rm "$path2/$name"
fi
done
# Clean up temporary files
# rm file1 file2