特定の文字で始まるすべてのディレクトリを取得するシェルスクリプト

特定の文字で始まるすべてのディレクトリを取得するシェルスクリプト

特定の文字で始まるすべてのディレクトリをインポートし、結果のリストをtxtファイルに保存するには、いくつかのシェルスクリプトを作成する必要があります。

例えば。

-目次はすべて大文字で作成

- 「Ab」で始まるすべてのディレクトリ

どんな提案がありますか?

ベストアンサー1

目次はすべて大文字で表示されます。

shopt -s nullglob
for d in [[:upper:]]*/ ; do
    echo "$d"
done > uppercase-dirs.txt

Ab次に始まるすべてのディレクトリ:

shopt -s nullglob
for d in Ab*/ ; do
    echo "$d"
done > Ab-dirs.txt

詳細については、次を参照してください。Bash マニュアルのパターンマッチングセクション

ディレクトリに改行文字などの珍しい文字を含めることができます。この場合、各ディレクトリをテキストファイルの新しい行にエコーすると、誤った結果が発生します。この問題を解決する 1 つの方法は、 nul 文字を使用して各ディレクトリを区切ることです。代わりにprintfを使用できます。

shopt -s nullglob
for d in Ab*/ ; do
     printf "%s\0" "$d"
done 

また、shopt -s nullglobパターンが一致しない場合も処理する必要があることに注意してください。それがなければ、一致するものがなければAb*/拡張され、Ab*/これは望むものではありません。Ab*/一致するものがない場合は、空の文字列に展開されます。

詳細については、次を参照してください。shoptBash マニュアルの一部

おすすめ記事