Estou escrevendo script é ksh. Precisa encontrar todos os nomes de diretório diretamente no diretório atual, que contêm apenas arquivos, não subdiretórios.
Eu sei que eu poderia usar ls -alR
e analisar recursivamente a saída para a primeira letra no primeiro campo ( d
para um diretório). Eu acho que awk
é a melhor maneira de analisar e encontrar.
Por exemplo, uma ls -al
saída simples no diretório atual:
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
…
Existem 2 diretórios nesta saída: Public
e Sites
. O diretório Public
não contém subdiretórios, mas contém Sites
. Existem 3 subdiretórios em Sites
. Então, eu preciso ecoar apenas os diretórios que não contêm diretórios neles. No meu caso, isso é apenas Sites
.
/some/directory
tiver o inode # 12345678, se não houver subdiretórios, haverá exatamente 2 links físicos para esse inode:/some/directory/.
e/some/directory
. Funciona se há ou não arquivos no diretório..
efoo/..
têm o mesmo número de inode.)*/
corresponde aos subdiretórios do diretório atual. Isso inclui links simbólicos para diretórios, que você pode ou não desejar.No ksh93, adicionar
~(N)
no início do padrão o expande para a lista vazia se não houver correspondência. Sem isso, o padrão permanece inalterado se não houver correspondência.A função ksh93 a seguir lista os subdiretórios dos diretórios atuais que não contêm nenhum subdiretório ou link para um diretório.
fonte
se não estou lhe entendendo mal, você só deseja encontrar arquivos no diretório e não nos subdiretórios. Se essa é a sua intenção, aqui está a solução
se você quiser encontrar outros arquivos que não sejam regulares (como arquivos de dispositivos de bloco, arquivos de dispositivos de caracteres etc.), consulte a página de manual do
find
comando e procure a palavra-chave type nessa página. Você verá diferentes tipos de arquivos, incluindo arquivos e diretórios regulares, etc.Espero que seja isso que você está procurando
fonte