J'ai un script et je souhaite afficher différents messages si un fichier existe ou non. J'ai un script comme:
count=ls /import/*.zip | wc -l
echo "Number of files: " $count
if [ "$count" > "0" ]; then
echo "Import $count files"
else
echo "**** No files found ****"
fi
Cependant, si aucun fichier n'existe, cela s'affiche No such file or directory
au lieu de 0 fichier. Il y a un répertoire dans le /import/
répertoire, donc je ne peux pas simplement faire une ls
commande car cela retournera toujours une valeur supérieure à 0.
Comment puis-je compter le nombre de fichiers d'une extension spécifique (.zip, .gz, etc.) et utiliser cette valeur dans un script bash pour afficher à la fois le nombre de fichiers et ensuite l'utiliser dans une instruction if pour afficher différents messages?
Essayez avec ceci:
L'idée est de masquer l'erreur "no such file" qui est imprimée dans STDERR en l'envoyant au bitbucket et d'utiliser la fonction de test appropriée pour comparer les nombres. (
-gt
Signifie « supérieur ». Il y a aussi-eq
,-lt
,-ge
, etc.)la source
count=$(find /import -type f -name "*.zip" | wc -l)
ls /import/*.zip
s'il y a des sousfind
variante.J'ai essayé votre script et, comme prévu, qu'aucun fichier ne correspondent il ne montre 0 fichiers dans la sortie, mais montre aussi l'
ls
erreur juste avant. Résoudre cela est assez facile, il n'est pas nécessaire de laisser tomberls
. Remplacez simplement la première ligne par ceci:2>/dev/null
redirige stderr vers/dev/null
, supprimant le message d'erreur.la source