Как распечатать имя файла списка с помощью ls, но если не найдено, вернуть пустую строку?

У меня есть файл имен

  • hua.txt
  • hai.txt

если

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

в taka.txt return

ls hua.txt *las*

я хочу * las * нет,

я просто хочу в taka.txt

ls hua.txt

и фильтр * {hua, las} * должен быть там ... тоже

пожалуйста, помогите

-1
11.10.2016, 02:40
1 ответ

Многие оболочки имеют разные дескрипторы, когда раскрытие имени пути (glob) не соответствует чему-либо.

Например, в bash у вас есть две опции оболочки:

  • nullglob :

    Если шаблон glob не соответствует чему-либо, он обрабатывается буквально по умолчанию в bash . Вы можете отключить это поведение, чтобы вернуть пустую строку, предварительно установив параметр nullglob :

     shopt -s nullglob 
     
  • failglob :

    Это более явный , когда шаблон glob не соответствует ни одному bash показывает соответствующее сообщение об ошибке:

     shopt -s failglob 
     

Учитывая ваши обстоятельства, вам следует использовать nullglob , если вы используете bash , или ищите любой аналогичный вариант, если вы используете другую оболочку.

2
28.01.2020, 05:08

Теги

Похожие вопросы