次のディレクトリ構造を考えてみましょう。
dir1
[domain.com] foo dir1
subdir1
subdir2
FooFile
dir2
[domain.com] foo dir2
subdir3
[domain.com] foo dir3
subdir4
subdir5
subdir6
subdir7
[domain.com] foo dir4
subdir8
[domain.com]
.Desired出力を含む名前をリストしたいと思います。
[domain.com] foo dir1
[domain.com] foo dir2
[domain.com] foo dir3
[domain.com] foo dir4
これを整理するのに苦労しています。私が得た最も近いもの:
find . -type d -regextype posix-egrep -regex ".*/(\[domain\.com\]).+" -exec basename {} \;
ただし、これはサブディレクトリも出力します。
[domain.com] foo dir3
subdir5
subdir4
[domain.com] foo dir2
[domain.com] foo dir4
subdir8
[domain.com] foo dir1
subdir1
答え1
GNUを見つけたようですので、これで十分でしょう:
find . -type d -name '\[domain.com\]*' -printf '%f\n'
GNUジョブfind
は、-printf
一致するファイルのデフォルト名のみを印刷できます%f
。
正規表現の問題は、それ以降のすべてを許可するため、サブディレクトリと一致すること[domain.com]
です/
。".*/(\[domain\.com\])[^/]+"
この問題を解決することもできます。