如何使用 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) 无法匹配任何内容时,许多 shell 具有不同的句柄。

例如,bash您有两个 shell 选项:

  • nullglob:

    如果 glob 模式无法匹配任何内容,则默认情况下在bash.您可以通过预先设置选项来禁用此行为以返回空字符串nullglob

    shopt -s nullglob
    
  • failglob

    这是更明确的,当全局模式无法匹配任何内容时,bash会显示相关错误消息:

    shopt -s failglob
    

nullglob鉴于您的情况,如果您使用的是,则应该选择bash,或者如果您使用的是不同的 shell,则应寻找任何类似的选项。

相关内容