如何列出给定目录中的所有文件但不列出目录并显示索引节点号。
类似的东西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
以便树将尾随附加/
到作为目录的每一行。利用该功能,我们可以抓取现在有此尾随的任何行/
并忽略它们。