サブディレクトリ名を解析しようとしていますが、出力結果では名前が個々の単語に分かれています。
例えば。サブディレクトリ名が「Hello World」の場合、出力は次のようになります。
.
Hello
World
次のコードは機能しますが、出力には望ましくない現在のディレクトリが含まれています。
find "$my_dir" -maxdepth 1 -type d -print0 |
while IFS= read -rd '' dir;
do
echo "$dir";
done
出力から現在のディレクトリを削除するifステートメントを含めようとしましたが、コードにはまだサブディレクトリ名ごとに別々の単語が表示されているようです。
find "$my_dir" -maxdepth 1 -type d -print0 |
while IFS= read -rd '' dir;
do
if ["$dir" != "."]; then
echo "$dir"
fi
done
ベストアンサー1
空白による中断はread
コマンドで発生しますが、とにかくそれを行う必要はありません。また、ロジックに問題がありますif
。my_dir
等しい場合にのみ機能し.
、それ以外の場合は出力にaを生成しfind
ません。.
最後に、この例では、パス全体ではなくディレクトリ名だけが必要であることを明示し、作成した方法でパスがfind
標準出力に渡されます。
より簡単な解決策は次のとおりです。
find "$my_dir" -maxdepth 1 -type d -exec basename {} \;|tail -n +2
ここでtail
秘密はコマンドです。$my_dir
出力から開始ディレクトリ()を除外しようとしています。find
このディレクトリは常に最初に出力されるため(深度優先巡回を明示的に要求しない限り)、結果出力から最初の行を削除するだけです。