linux - 在 bash 脚本和 awk 命令方面需要帮助

标签 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

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

planet=earth
category=animal (plant) 
sub cat = carni 
name = lion.jpg.

我试过了

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

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

planet=earth 
category=animal (plant)  
sub cat = carni 
name = lion.jpg

但在某些情况下,我还有其他文件夹,例如“/earth/animals/herbi/omni/rabbit.jpg”,在这种情况下,输出顺序正在发生变化,例如:

planet=earth 
category=animal 
sub cat = herbi 
name = omni 
rabbit.jpg 

所以我需要在几个地方列出额外的子目录。喜欢

planet=earth
category=animals
sub cat = herbi
add cat = omni
name = rabbit.jpg

那么如何使用单个脚本来做到这一点。除 awk 之外的脚本也是受欢迎的。

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

在这种情况下,$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 }'"``.

谢谢, 维杰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
}'

关于linux - 在 bash 脚本和 awk 命令方面需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10530642/

相关文章:

php - 为什么 PHP 不能在我的 Raspberry Pi 上运行?

c - make - 删除未使用的文件

linux - linux上的登录时间问题

linux - od --width=x 选项不起作用。我的路径似乎是正确的。

regex - Bash 扩展全局模式否定在参数替换中不起作用

python - 如何在没有 root 访问权限的情况下在启动时运行 bash 脚本?

linux - 如何使用 bash 脚本按两个字段分组?

linux - 将命令粘贴到不同的行号文件

用于识别用户的 Bash 脚本

c - 一个进程写入,而另一个进程读取共享内存