如何在linux中获取字符串的某些部分

如何在linux中获取字符串的某些部分

find 命令的输出类似于

/home/user/test/folder1/abc.png

现在我想得到

文件夹1

从上面的字符串

答案1

您是否根据路径左侧的固定位置或右侧的固定深度来寻找路径的该部分?如果您从左侧查看,则可以通过使用“/”作为字段分隔符并抓取第四个字段,通过 cut 轻松完成此操作,如下所示:

find ... | cut -d/ -f4

答案2

path=/home/user/test/folder1/abc.def
folder=$(basename $(dirname $path))

或者,如果您想对 find 的输出进行操作(即多个路径,每行一个)

find ... | awk -F/ '{print $(NF-1)}'
find ... | sed 's#.*/\([^/]*\)/[^/]*$#\1#'

答案3

我会使用 awk。

就像是:

find /home -name "abc.png" | awk -F"/" '{print $5}'

答案4

这是我的尝试:

find . -name abc.png -exec dirname {} \; |grep -o '[^/]*$'

相关内容