【发布时间】:2021-05-15 08:13:39
【问题描述】:
我们可以使用 find 关键字找到目标文件的完整绝对路径。就我而言,我需要当前位置的所有直接下一个目录的列表,这可以引导我到名为 foo.log
的程序日志文件例如,一些路径可能是:
current-location/alpha/beta/gamma/foo.log
current-location/apple/banana/foo.log
and so on...
对于上述情况,我需要一个 ['alpha', 'apple'] 列表作为我的结果,因为它包含所有可能的直接下一个文件夹以到达目标文件。
我是 Linux 的新手。我知道,我总是可以创建一个蛮力解决方案,因为我有绝对路径和当前路径,但是任何优化/更好的解决方案或正确方向的任何提示/想法都可以!
编辑:
我不想要第一个不同的文件夹,只想要当前位置的直接文件夹
我的蛮力方法:
result={}
for all the Absolute-path which can reach foo.log:
Suffix-path = (Absolute-path - current-path)
Append the Suffix-path[0] to result
【问题讨论】:
-
你输入的
current-location部分是绝对路径吗?current-location和pwd的输出一样吗?请在您的问题中澄清这一点并展示一个更好的例子。输入是find命令打印的一些输出吗?然后显示您使用的find命令。使用 shell 变量扩展很容易去除前导或尾随字符串。或许可以修改find命令以使其更容易。 -
是的,当前位置是一个绝对路径,我认为问题陈述和预期答案都提到了很清楚
-
请在问题中添加所有说明,而不是在 cmets 中回答。当然,您的问题对您来说很清楚,但对其他人来说不一定。对我来说,除了您在文本中提到它之外,您的问题与
find标签有何关系并不清楚。据我所知,find命令只有在您提供绝对路径作为起点参数时才会打印绝对路径。也不清楚您所说的“['alpha', 'apple']列表”是什么意思。一个看起来像这个例子的字符串?bash脚本中的数组? Python 脚本中的列表? -
我们是否需要将它像列表/数组/或其他任何东西返回到解决此问题所需的逻辑?还 find 命令正在帮助我提到的蛮力解决方法?耸耸肩? @Bodo
-
这显然会增加解决方案的复杂性,是的;逗号分隔的列表比方括号括起来的列表和单引号中的元素更容易输出。如果没有格式化细节
find -name foo.log|awk -F'/' '{print $2}'就足够了,因为,鉴于您提供的“示例数据”,当在current-location中执行时,它会吐出alpha和apple。仅仅因为您的问题罗嗦并不能说明问题。