Listar apenas arquivos em um diretório e mostrar o número do inode

1

Como posso listar todos os arquivos, mas não os diretórios, em um determinado diretório e mostrar os números de inode.

Algo como ls -li | grep ^- não funciona, pois o número do inode é mostrado no começo da linha.

    
por student 06.07.2013 / 16:07

4 respostas

4

Existem várias soluções. Supondo que você não tenha um nome de arquivo começando com -

ls -li | grep " -"
ls -li | awk '/ -/'

Se um diretório contiver - , ele poderá ser corrigido por

ls -li | grep "[0-9][0-9]* -"
ls -li | awk '$2 ~ "-.{9}"'
    
por 06.07.2013 / 16:28
2

Você pode usar find :

find . -maxdepth 1 -type f -exec ls -li '{}' \;

ou, para obter uma saída semelhante a ls :

find . -maxdepth 1 -type f  -printf '%i %M %n %u %g %kK %Tc %p\n'

A análise de ls é uma má ideia , pois pode levar a problemas.

Se você realmente quiser usar ls diretamente, poderá fazer isso:

ls -li | gawk '$2!~/d/'
    
por 06.07.2013 / 16:16
1

Outra alternativa de encontrar:

find -maxdepth 1 -type f -printf "%i %p\n"

Ou ainda outro:

find -maxdepth 1 -type f -ls
    
por 06.07.2013 / 16:29
1

Aqui está uma maneira alternativa de usar os comandos tree e grep . O grep é usado para filtrar as entradas do diretório:

$ tree --inodes -f -F|grep -v "/$"

Exemplo

$ tree --inodes -f -F|grep -v "/$"|less
.
|-- [10370679]  ./a
|-- [10359494]  ./a.bash*
|   |-- [10359495]  ./alsa/alsa-info.sh*
|   '-- [10370145]  ./alsa/alsa-info.txt.v8hSmCT2Rf
|   |   |   |-- [11147371]  ./apps/apache-maven-2.0.9/bin/m2*
|   |   |   |-- [11147367]  ./apps/apache-maven-2.0.9/bin/m2.bat
|   |   |   |-- [11147368]  ./apps/apache-maven-2.0.9/bin/m2.conf
|   |   |   |-- [11147372]  ./apps/apache-maven-2.0.9/bin/mvn*
|   |   |   |-- [11147369]  ./apps/apache-maven-2.0.9/bin/mvn.bat
|   |   |   |-- [11147373]  ./apps/apache-maven-2.0.9/bin/mvnDebug*
|   |   |   '-- [11147370]  ./apps/apache-maven-2.0.9/bin/mvnDebug.bat
|   |   |   '-- [11147378]  ./apps/apache-maven-2.0.9/boot/classworlds-1.1.jar
|   |   |   '-- [11147374]  ./apps/apache-maven-2.0.9/conf/settings.xml
|   |   |   '-- [11147376]  ./apps/apache-maven-2.0.9/lib/maven-2.0.9-uber.jar
|   |   |-- [11147363]  ./apps/apache-maven-2.0.9/LICENSE.txt
|   |   |-- [11147364]  ./apps/apache-maven-2.0.9/NOTICE.txt
|   |   '-- [11147365]  ./apps/apache-maven-2.0.9/README.txt

O acima incorpora a hierarquia de diretórios nas linhas de cada arquivo e também usa a opção -F para que a árvore anexe um / à direita a cada linha que é um diretório. Utilizando esse recurso, podemos pegar qualquer linha que agora tenha esse / e omiti-lo.

Referências

por 06.07.2013 / 17:00

Tags