-1

可能重复:
在 bash 脚本和 awk 命令中需要帮助

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

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

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

4

1 回答 1

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”。

如果您有多个子类别,我不确定该怎么做,但这应该会让您接近。

于 2012-05-30T05:03:26.377 回答