我们可以使用find关键字找到目标文件的完整绝对路径。就我而言,我需要给定位置的所有直接下一个目录的列表,这可以引导我到名为foo.log的程序日志文件
例如,一些路径可能是:
given-location/alpha/beta/gamma/foo.log
given-location/apple/banana/foo.log
对于上述情况,我需要一个列表/数组/向量['alpha', 'apple']
作为我的结果,因为它包含所有可能的直接下一个文件夹以到达目标文件。
我是Linux工具的新手。我知道,我总是可以创建一个蛮力解决方案,因为我有绝对路径和给定路径,但是任何优化/更好的解决方案或任何正确方向的提示/想法都可以!
我不想要第一个不同的文件夹,只想要给定位置的直接文件夹。
我的蛮力方法:
result={}
for all the Absolute-path which can reach foo.log:
Suffix-path = (Absolute-path - given-path)
Append the Suffix-path[0] to result
使用 awk 获取字符串的第二个字段:
%P
格式指令将在起点之后直接为您提供路径:您可以使用运算符将输出附加
find
到数组+=
:下一个示例使用 globstar
**/
;匹配零个或多个子目录。将起始索引移动
-O
到数组的末尾可以附加新值。-t
删除尾随分隔符-d
Delim 用于终止每个输入行,而不是换行符。-s
丢弃读取的第一个计数行。-n
最多复制计数行。-O
开始在索引原点分配给数组。