いくつかの名前付きディレクトリとファイルを除いて、下位レベルのディレクトリを一覧表示する

いくつかの名前付きディレクトリとファイルを除いて、下位レベルのディレクトリを一覧表示する

すべてのフォルダのリスト(1つのレイヤーを含む)をtxtファイルに送信したいと思います。一部の名前付きフォルダは含まれておらず、ファイルも含まれていません。このようなフォルダ構造を想像してみてください。 CAPSはフォルダです。

FOLDER 1

.hidden

TEMP

somefile

=========

=========

FOLDER 2

.hidden

TEMP

DATA1

DATA2

somefile

========

========

FOLDER 3

.hidden

TEMP

DATA1

somefile

「ここに魔法命令を挿入」を実行し、以下のような出力を得たいと思います。

FOLDER 1

FOLDER 2

DATA1

DATA2

FOLDER 3

DATA1

ベストアンサー1

フォルダ構造を作成するには、次の手順を実行します。

for     f in    FOLDER\ 1 FOLDER\ 2 FOLDER\ 3
do      mkdir   -p "$f/TEMP"
        touch   "$f/.hidden" "$f/somefile"
        case    "$f" in
        (*2)    mkdir -p    "$f/DATA1/TEMP" "$f/DATA2/TEMP";;
        (*3)    mkdir -p    "$f/DATA1/TEMP"
        esac
done

これにより、次のツリーが作成されます。

find .

.
./FOLDER 1
./FOLDER 1/TEMP
./FOLDER 1/.hidden
./FOLDER 1/somefile
./FOLDER 2
./FOLDER 2/TEMP
./FOLDER 2/.hidden
./FOLDER 2/somefile
./FOLDER 2/DATA1
./FOLDER 2/DATA1/TEMP
./FOLDER 2/DATA2
./FOLDER 2/DATA2/TEMP
./FOLDER 3
./FOLDER 3/TEMP
./FOLDER 3/.hidden
./FOLDER 3/somefile
./FOLDER 3/DATA1
./FOLDER 3/DATA1/TEMP

やっとやりました…

find . ! -path './*/*/*' ! -name TEMP -type d

.
./FOLDER 1
./FOLDER 2
./FOLDER 2/DATA1
./FOLDER 2/DATA2
./FOLDER 3
./FOLDER 3/DATA1

おすすめ記事