仅列出目录中的文件并显示索引节点号

仅列出目录中的文件并显示索引节点号

如何列出给定目录中的所有文件但不列出目录并显示索引节点号。

类似的东西ls -li | grep ^-不起作用,因为索引节点号显示在行的开头。

答案1

有多种解决方案。假设您没有以以下开头的文件名-

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

如果目录包含-,则可以通过以下方式修复

ls -li | grep "[0-9][0-9]* -"
ls -li | awk '$2 ~ "-.{9}"'

答案2

你可以使用find

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

或者,获得ls类似的输出:

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

解析ls是一个馊主意因为它常常会带来麻烦。

如果你真的想ls直接使用,你可以这样做:

ls -li | gawk '$2!~/d/'

答案3

另一种寻找替代方案:

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

或者还有另一个:

find -maxdepth 1 -type f -ls

答案4

这是使用命令tree和 的另一种方法grep。 Grep 用于过滤目录条目:

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

例子

$ 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

上面的代码将目录层次结构合并到每个文件的行中,并且还使用了开关,-F以便树将尾随附加/到作为目录的每一行。利用该功能,我们可以抓取现在有此尾随的任何行/并忽略它们。

参考

相关内容