我需要一个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
文件大小。
答案 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”。
如果你有几个子类别,我不知道该怎么办,但这应该让你接近。