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

いくつかの場所では、追加のディレクトリもあり/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 番目のトークンは $2 など。awk は改行も「\n」と認識します。

複数のサブカテゴリがある場合はどうすればよいかわかりませんが、これで近づくはずです。

于 2012-05-30T05:03:26.377 に答える