我需要一个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
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)