lsを使用してファイル名のリストを印刷しますが、見つからない場合は空の文字列を返す方法は?

lsを使用してファイル名のリストを印刷しますが、見つからない場合は空の文字列を返す方法は?

名前ファイルがあります。

  • 花.txt
  • 海.txt

もし

print ls *{hua,las}* > taka.txt 

taka.txtとして返す

ls hua.txt *las*

*las*私はそこにいたくありません。

ただ taka.txt に入れたい

ls hua.txt

フィルター*{hua,las}*も必要です。

助けてください

答え1

多くのシェルには、パス名拡張子(glob)が一致できない場合は別のハンドルがあります。

たとえば、次のbash2つのシェルオプションがあります。

  • nullglob:

    globパターンが一致しない場合、デフォルト値はですbash。空の文字列を返すように事前にオプションを設定することで、この動作を無効にできますnullglob

    shopt -s nullglob
    
  • failglob:

    これはより明示的であり、グローバルパターンがどの項目とも一致しない場合に関連するbashエラーメッセージが表示されます。

    shopt -s failglob
    

nullglob状況に応じてを使用する場合は選択するbashか、他のシェルを使用している場合は同様のオプションを見つける必要があります。

関連情報