2017-10-11 2 views
0

je voulais comparer les noms de fichiers dans le répertoire de chaînes dans un tableau et écho non trouvé casser si quelqu'un nom de fichier n'est pas présent - Code I écrit estComparer les noms de fichiers dans le répertoire à la chaîne de tableau

#!/bin/bash 
# find all json files recursively; cp to destination folder; try to parameterised/read from a file 
#find -name '*.json' -exec cp {} destination_folder/ \; 

Dir2="destination_folder/*" 

declare -a JSON_MandatoryFiles=('abc.json' 'bcd.json' 'efg.json' 'ijk.json'); 
for i in $Dir2; do 

    for j in "${JSON_MandatoryFiles[@]}"; do 
     if [ $j == $(basename $i) ]; then 
     echo $j "Found" 
     break 
     fi 
    done 
done 

Cependant Je suis incapable de suivre où devrais-je garder d'autre écho "Non trouvé" et casser. S'il vous plaît aider

Répondre

0

Vous pouvez simplement utiliser:

Dir2="destination_folder" #remove /* from here 

declare -a JSON_MandatoryFiles=('abc.json' 'bcd.json' 'efg.json' 'ijk.json'); 

for j in "${JSON_MandatoryFiles[@]}"; do 
    if [ -f "${Dir2}/$j" ]; then 
    echo "$j exists"; 
    else 
    echo "$j does not exist"; # include exit; if you want to exit 
fi 
+0

Mais cela me donne pas trouvé à chaque itération check – RCoder

+0

faire une chose .. donner un chemin absolu pour le dossier de destination dans DIR2 pour par exemple. 'DIR2 ="/home/abc/xyz "' (Ne pas mettre '/' à la fin de ceci car nous utilisons '/' dans la condition 'if' – batMan

+0

@RCoder: J'ai mis à jour la solution !! Je sais s'il y a un problème. – batMan