gpt4 book ai didi

linux - 从 ls 命令中提取 inode

转载 作者:太空宇宙 更新时间:2023-11-04 08:59:41 25 4
gpt4 key购买 nike

我正在尝试从 ls 命令中提取 inode:

 "ls -i"

输出:

1234 File name with space
2345 File name

为了提取,我尝试使用如下的 cut 命令:

ls -i | cut -d" " -f1

以上命令无效,因为文件名中的空格数不同。从手册页中,我发现通过为 ls 命令指定“-Q”,它会双引号文件名:

ls -iQ 
1234 "File name with space"
2345 "File name"

我找不到使用此选项的方法。任何帮助将不胜感激。

谢谢

更新 1看起来文件名空间不是问题的原因。它是 inode 号的大小。例如:

ls -iQ
2321352 "My Cheat Tables"
507896 "My Data Sources"

请注意数字“507896”前的前导空格。因此,对于第一个文件, inode 在字段 1(-f1) 中,对于第二个文件, inode 号在第二个字段(-f2) 中。

更新 2(我的解决方案)

我找到了解决方案.. xD 命令如下:

ls -iQ | cut -d ' "' -f1

上面只会打印 inode。但是,我想知道是否有适当或更好的方法来做到这一点。如果您知道正确的方法,请在这篇文章中回答。我是 unix 的新手,我很想以正确的方式学习它。谢谢..:)

最佳答案

如果您有未知数量的尾随(或定界)空格,您可以使用 awk 获取所需的列:

ls -iQ1 | awk '{print $1}'

除了cutawk 会忽略任意数量的连续空格,因此您无需猜测偏移量。

更好的解决方案是明确询问您需要的信息,而不是解析 ls 输出:

find . -type f -printf '%i\n'

关于linux - 从 ls 命令中提取 inode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24109912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com