J'écris le script est ksh. Besoin de trouver tous les noms de répertoire directement sous le répertoire actuel qui ne contiennent que des fichiers, pas des sous-répertoires.
Je sais que je pourrais utiliser ls -alR
et analyser récursivement la sortie pour la première lettre du premier champ ( d
pour un répertoire). Je pense que awk
c'est la meilleure façon d'analyser et de trouver.
Par exemple, une simple ls -al
sortie dans le répertoire courant:
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
…
Il y a 2 répertoires dans cette sortie: Public
et Sites
. Le répertoire Public
ne contient pas de sous-répertoires, mais le Sites
fait. Il y a 3 sous-répertoires dans Sites
. J'ai donc besoin d'écho uniquement les répertoires qui ne contiennent pas de répertoires. Dans mon cas, c'est seulement Sites
.
/some/directory
a l'inode # 12345678, s'il n'a pas de sous-répertoires, il y aura exactement 2 liens durs vers cet inode:/some/directory/.
et/some/directory
. Cela fonctionne qu'il y ait ou non des fichiers dans le répertoire..
etfoo/..
ont le même numéro d'inode.)*/
correspond aux sous-répertoires du répertoire courant. Cela inclut des liens symboliques vers des répertoires, que vous souhaitiez ou non.Dans ksh93, l'ajout
~(N)
au début du modèle le fait s'étendre à la liste vide s'il n'y a pas de correspondance. Sans cela, le modèle reste inchangé s'il n'y a pas de correspondance.La fonction ksh93 suivante répertorie les sous-répertoires des répertoires actuels qui ne contiennent aucun sous-répertoire ni lien vers un répertoire.
la source
si je ne vous comprends pas, vous voulez seulement trouver des fichiers dans le répertoire et non dans les sous-répertoires. Si telle est votre intention, voici la solution
si vous voulez trouver des fichiers autres que des fichiers normaux (comme les fichiers de périphériques de blocs, les fichiers de périphériques de caractères, etc.), consultez la page de manuel pour la
find
commande et recherchez le mot-clé type sur cette page. Vous verrez différents types de fichiers, y compris des fichiers et des répertoires normaux, etc.J'espère que c'est ce que vous recherchez
la source