Estoy escribiendo guión es ksh. Necesita encontrar todos los nombres de directorio directamente debajo del directorio actual que contienen solo archivos, no subdirectorios.
Sé que podría usar ls -alR
y analizar de forma recursiva la salida de la primera letra en el primer campo ( d
para un directorio). Creo que awk
es la mejor manera de analizar y encontrar.
Por ejemplo, una ls -al
salida simple en el directorio actual:
drwxr-xr-x 22 af staff 748 18 Mar 22:21 .
drwxr-xr-x 5 root admin 170 17 Mar 18:03 ..
-rw------- 1 af staff 3 17 Mar 16:37 .CFUserTextEncoding
drwxr-xr-x 5 af staff 170 17 Mar 17:12 Public
drwxr-xr-x 9 af staff 306 18 Mar 17:40 Sites
-rw------- 1 af staff 3 17 Mar 16:37 textd
…
Hay 2 directorios en esta salida: Public
y Sites
. El directorio Public
no contiene subdirectorios, pero Sites
sí. Hay 3 subdirectorios en Sites
. Por lo tanto, necesito hacer eco solo de los directorios que no contienen directorios en ellos. En mi caso, esto es solo Sites
.
/some/directory
tiene el inodo # 12345678, si no tiene subdirectorios, habrá exactamente 2 enlaces duros a ese inodo:/some/directory/.
y/some/directory
. Funciona si hay o no archivos en el directorio..
yfoo/..
tengo el mismo número de inodo.)*/
coincide con los subdirectorios del directorio actual. Esto incluye enlaces simbólicos a directorios, que puede desear o no.En ksh93, agregar
~(N)
al comienzo del patrón hace que se expanda a la lista vacía si no hay coincidencia. Sin esto, el patrón permanece sin cambios si no hay coincidencia.La siguiente función ksh93 enumera los subdirectorios de los directorios actuales que no contienen ningún subdirectorio o enlace a un directorio.
fuente
si no te estoy malentendiendo, solo quieres encontrar archivos en el directorio, no en los subdirectorios. Si esta es tu intención, aquí está la solución
si desea buscar archivos que no sean normales (como archivos de dispositivo de bloque, archivos de dispositivo de caracteres, etc.), consulte la página del
find
comando man y busque la palabra clave type en esa página. Verá diferentes tipos de archivos, incluidos archivos y directorios normales, etc.Espero que esto sea lo que buscas
fuente