需要帮助bash脚本和awk命令

vij*_*jai 0 linux bash awk

我需要一个bash脚本来递归打印文件夹名称和文件名(在stdo/p中).例如:我有一个文件夹结构,如/earth/plants/flowers/rose/rose.jpg.

/earth/plant/fruits/apple/apple.jpg.
/earth/animals/carni/lions.jpg
/earth/animals/herbi/omni/dog.jpg
Run Code Online (Sandbox Code Playgroud)

现在我需要列出这样的文件和文件夹,我的意思是我的O/P脚本应该是,

planet=earth
category=animal (plant) 
sub cat = carni 
name = lion.jpg.
Run Code Online (Sandbox Code Playgroud)

我试过了

`find / -name "*" -print | awk -F"/" '{ print "\n planet=",$2,"\n category=",$3,"\n sub cat=",$4,"\n Name=",$5, $6 }'`
Run Code Online (Sandbox Code Playgroud)

上面的命令给了我以下的O/P.

planet=earth 
category=animal (plant)  
sub cat = carni 
name = lion.jpg
Run Code Online (Sandbox Code Playgroud)

但在某些情况下,我有其他文件夹,如" /earth/animals/herbi/omni/rabbit.jpg"在这种情况下顺序正在改变输出,如:

planet=earth 
category=animal 
sub cat = herbi 
name = omni 
rabbit.jpg 
Run Code Online (Sandbox Code Playgroud)

所以我需要在很少的地方列出额外的subcat.喜欢

planet=earth
category=animals
sub cat = herbi
add cat = omni
name = rabbit.jpg
Run Code Online (Sandbox Code Playgroud)

所以如何使用单个脚本.除了awk之外,还欢迎使用.

`find / -name "*" -print | awk -F"/" '{ print "\n planet=",$2,"\n category=",$3,"\n sub cat=",$4,"\n Name=",$5,$6}``
Run Code Online (Sandbox Code Playgroud)

在这种情况下,5美元它只会打印为名称.所以需要这样的东西.

 ``find / -name "*" -print | awk -F"/" '{ print "\n planet=",$2,"\n category=",$3,"\n sub cat=",$4,"\n add cat =",$5,(if $5 = foldername print  "add cat = omni")  name = $6 }'"``.
Run Code Online (Sandbox Code Playgroud)

谢谢,vijai k

Pau*_*ce. 5

awk -F"/" '{
    print "\n planet=", $2, "\n category=", $3, "\n sub cat=", $4
    for (i = 5; i < NF; i++) print " add cat=", $i
    print " Name=",$NF
}'
Run Code Online (Sandbox Code Playgroud)