需要帮助bash脚本

时间:2012-05-30 04:50:12

标签: bash shell

  

可能重复:
  Need help in bash script and awk command

我需要一个bash脚本来递归打印目录名和文件名。例如:我有一个目录结构,如:

/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.

在某些地方,我还有其他目录。如/earth/animals/carni/jungle/lions.jpg

然后我还需要显示lions.jpg文件大小。

1 个答案:

答案 0 :(得分:0)

这可能会让你成为那里的一部分...

find /earth | sed -e 's/\// /' | awk '{ print "planet = " $1 "\ncategory = " $2 "\nsubcat = " $3 "\nname = " $4}'

我会把它分开,以便其他人可以改进/修改

find /earth

find只会转储/ earth目录

的所有内容列表
sed -e 's/\// /'

我用空格字符替换了所有正斜杠,这样我就可以轻松地将这些单词分开。我可以通过告诉awk使用正斜杠作为分隔符来执行此步骤,但这可能(或可能不)对将来的修订有用,所以我保留它。

awk '{ print .... }'

我告诉awk打印出问题中列出的各种类别的输入。 $ 1表示第一个令牌。第二个令牌2美元等等。 awk也理解线条断裂“\ n”。

如果你有几个子类别,我不知道该怎么办,但这应该让你接近。