Contar archivos y directorios usando shell script
Estoy aprendiendo bash scripting y he escrito un script para contar los archivos y directorios en el directorio que se proporciona como argumento. Lo tengo funcionando de una manera que me parece extraña y me pregunto si hay una forma más sencilla de hacerlo.
He comentado el código que funcionará, pero lo dejé como una comparación. Estoy tratando de obtener elfor
-loop trabajando, en lugar de usarif
declaraciones dentro de él para detectar si un elemento en la ubicación dada es un archivo o un directorio.
Editar: ¡Acabo de descubrir que el código comentado cuenta todos los archivos y directorios en los subdirectorios de la ubicación dada también! ¿Hay alguna forma de evitar esto y solo contar los archivos y directorios de la ubicación dada?
#!/bin/bash
LOCATION=$1
FILECOUNT=0
DIRCOUNT=0
if [ "$#" -lt "1" ]
then
echo "Usage: ./test2.sh <directory>"
exit 0
fi
#DIRS=$(find $LOCATION -type d)
#FILES=$(find $LOCATION -type f)
#for d in $DIRS
#do
# DIRCOUNT=$[$DIRCOUNT+1]
#done
#for f in $FILES
#do
# FILECOUNT=$[$FILECOUNT+1]
#done
for item in $LOCATION
do
if [ -f "$item" ]
then
FILECOUNT=$[$FILECOUNT+1]
elif [ -d "$item" ]
then
DIRCOUNT=$[$DIRCOUNT+1]
fi
done
echo "File count: " $FILECOUNT
echo "Directory count: " $DIRCOUNT
Por alguna razón la salida de lafor
-loop, no importa dónde apunte la ubicación, siempre devuelve:
File count: 0 , Directory count: 1