Bonjour,

j'ai fais un petit script shell pour faire le listing des fichiers d'un répertoire et le comparer à tous les fichiers de 2 autres répertoire, afin de vérifier s'il trouve 2 fichiers identiques.

Voici mon script:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/bin/bash
 
files1=()
files2=()
 
# Directories to compare. Adding quotes at the begining and at the end of each files found in content1 & content3
 
content2=$(find /data/logs -name "*.log" -type f)
content1=$(find /data/other/logs1 -type f | sed 's/^/"/g' | sed 's/$/"/g')
content3=$(find /data/other/logs2 -type f | sed 's/^/"/g' | sed 's/$/"/g')
 
# ADDING CONTENT INTO FILES1 & FILES2 ARRAY
while read -r line; do
        files1+=("$line")
done <<< "$content1"
 
# content1 and content3 goes into the same array
while read -r line3;do
        files1+=("$line3")
done <<< "$content3"
 
while read -r line2; do
        files2+=("$line2")
done <<< "$content2"
 
 
# Here i'm trying to compare 1 by 1 the files in files2 to all files1
for ((i=0; i<${#files2[@]}; i++))
do
        for ((j=0; j<${#files1[@]}; j++))
        do
                if [[ -n ${files2[$i]} ]];then
                        diff -s "${files2[$i]}" "${files1[$j]}" > /dev/null
                        if [[ $? == 0 ]]; then
                                echo ${files1[$j]} "est identique a" ${files2[$i]}
                                unset 'files2[$i]'
                                break
                        fi
                fi
        done
done
 
#SHOW THE FILES THAT DIDN'T MATCHED ANYTHING
echo ${files2[@]}
J'ai l'erreur suivante : diff: "/data/content3/other/log2/perso log/somelog.log": Aucun fichier ou dossier de ce type

Pourtant le fichier existe quand je fait un ls sur le même chemin:

ll "/data/content3/other/log2/perso log/somelog.log"
-rw-rw-r-- 2 lopom lopom 551M 30 oct. 18:53 '/data/content3/other/logs2/perso log/somelog.log'

J'ai selon moi besoin des guillements car dans certains chemins il peut y avoir des espaces, et diff l'interprète mal.

J'ai essayé de mettre les valeurs dans les tableaux avec des simples guillemets mais ca ne résous pas le problème.

J'espère avoir été assez compréhensible, je reste disponible si vous avez des questions.

Merci par avance