回答:
GNU find
では、次の-printf
オプションを使用できます。
find . -maxdepth 1 -type d -printf '%f\n'
コメントでPawełが述べたように、現在のディレクトリを一覧表示したくない場合は-mindepth 1
、たとえばaddを追加します。
find . -mindepth 1 -maxdepth 1 -type d -printf '%f\n'
printf
のオプションは、POSIXで言及されていないと、彼らは他のいくつかによってサポートされていないようですfind
バージョン。GNU findはほとんどの場所にインストールできるため、その意味で移植可能です。
-mindepth 1
.
更新:
より短い代替案:
find . -maxdepth 1 -type d | cut -c 3-
名前をスラッシュなしで1行に1つずつ表示します
\n
ディレクトリ名にa があり、それを取得するためにcutを使用できないことを考慮してください(これは、私があなたに投票したときのことです)。ls
危険な振る舞いをしないケースはほとんどなく、別の方法を使用する方がほとんど常に安全です。
GNU findを使用して、-mindepthを使用して、findが現在のディレクトリと一致しないようにすることができます。
find . -type d -maxdepth 1 -mindepth 1
これを再帰的に行っていないため、bash globを使用できます。
echo */
末尾に/をグロブに追加すると、ディレクトリのみが一致します。
*/
ドットファイルが欠落し、シンボリックリンクが含まれます。これは問題になる場合もあれば、そうでない場合もあります。
私はむしろ使用したい:
find ./ -type d -maxdepth 1 -exec basename {} \;
私は通常使用します:
find * -type d
しかし、それがあなたが望むことをする正しい方法であるかどうかはわかりません。
echo */
多かれ少なかれ同じことを行いますが(ドットファイルを見逃し、シンボリックリンクを含みます)、joachimはfinalを削除する方法を尋ねます/
。
AIXでは、パラメーター 'maxdepth'は機能しません。
一般的にこれは私のために働く:
find ./ -type d | cut -d"/" -f2 | sort -u
foo bar ...
なくても1行ですべてが欲しい./
ですか?