Estoy tratando de ls algunos archivos con un patrón en un directorio. Solo quiero escanear el primer nivel no recursivo.
Mi guión:
for i in $(ls $INCOMINGDIR/*$BUSSINESSDATE*)
do
echo $i;
done
El comando anterior escanea recursivamente. ¿Cómo puede hacer que solo se escanee el directorio de primer nivel?
bash
shell-script
ls
Sas
fuente
fuente

printf %s\\n "$INCOMINGDIR/"*"$BUSINESSDATE"*Respuestas:
No analizar
ls. Tampoco use ALL_CAPS_VARSInteractivamente,
lstiene una-dopción que evita descender a subdirectorios:fuente
"${i}". Nunca se sabe en qué podría estari.my_file.doc[newline]another_persons_file.docy esperar que algunos scripts intenten "rm" lo que ve como 2 nombres de archivo ... El enlace de Glenn es una lectura obligada (en mywiki.wooledge.org, todos deberían leerlo) todo el faq, y también la página de escollos)ls -d .*No hay razón para que este comando sea recursivo. Pero si
$INCOMINGDIR/*$BUSSINESSDATE*coincide con un directorio, se muestra el contenido de este directorio en lugar del directorio en sí. Pero no habría recursividad más allá de este nivel.Use este comando para evitar ese efecto:
for ... inLos comandos conlssalida son arriesgados.En general
findparece una mejor solución ofuente