Используя globbing/wildcards при Открытии Files from Terminal

Это не возможно. Или по крайней мере не легкий. У Вас могла бы быть некоторая удача при присоединении gdb к процессу и игре с ним в gdb, но это может привести к катастрофическим отказам так же легко как успех.

2
21.11.2013, 18:20
2 ответа

Как насчет find A -maxdepth 1 -type f -exec xdg-open {} \;

Это должно открыть все файлы в папке, не идя дальше, чем верхний уровень.

4
27.01.2020, 21:57
  • 1
    Это будет работать, но это - довольно долгая команда. Я мог исказить его, но я чувствую, как будто более изящное решение должно быть возможным... –  Newb 16.11.2013, 00:41
  • 2
    Насколько я знаю, что это является самым близким, то, что вы собирались добирается до того, в чем Вы нуждаетесь. –  Jeight 16.11.2013, 01:03
  • 3
    Это походит на наилучший вариант. –  coteyr 16.11.2013, 02:58
  • 4
    @coteyr - Можно добиться большего успеха, чем это использование расширенный globbing в Bash! См. мой обновленный ответ. –  slm♦ 16.11.2013, 03:28
  • 5
    @slm, я думаю, что globbing хорош, но это, кажется, "более трудно" использовать, если Вы не хотите "знать" содержание папок. Этот ответ может просто быть выполнен с любыми специальными знаниями каталога. –  coteyr 16.11.2013, 06:59

Метод № 1 - расширения Shell

Если Вы знаете, что объекты, которые Вы после, последовательно называют, можно использовать расширения оболочки во множестве путей.

Примеры

$ xdg-open [a-d]
$ xdg-open {a..d}
$ xdg-open a* b*

Метод № 2 - Расширенный globbing

В Bash (версии 3.2 +) можно использовать расширенный globbing для включенного все кроме чего-то, которому я верю, то, что Вы просите.

Примеры

$ xdg-open !(B)
$ xdg-open !(A|B)

Образцы

Я часто буду использование времен echo таким образом, я вижу то, что globstar или расширенный globbing разработают, чтобы быть, на самом деле не выполняя реальную команду в расширенных списках файлов и/или каталогах.

Пример

Скажите, например, что у меня есть следующий каталог файлов.

$ ls -l
total 8
-rw-rw-r-- 1 saml saml    0 Nov 15 20:12 a
drwxrwxr-x 2 saml saml 4096 Nov 15 20:23 A
-rw-rw-r-- 1 saml saml    0 Nov 15 20:12 b
drwxrwxr-x 2 saml saml 4096 Nov 15 20:12 B
-rw-rw-r-- 1 saml saml    0 Nov 15 20:12 c
-rw-rw-r-- 1 saml saml    0 Nov 15 20:12 d
-rw-rw-r-- 1 saml saml    0 Nov 15 20:12 e
-rw-rw-r-- 1 saml saml    0 Nov 15 20:12 f

Теперь, если мы испытываем вышеупомянутые расширения, мы видим, как они были бы ярмарка.

$ echo [a-d]
a A b B c d

$ echo {a..d}
a b c d

$ echo a* b*
a b

$ echo !(B)
a A b c d e f

$ echo !(A|B)
a b c d e f

Расширенный globbing

Существует множество других методов, которые можно использовать для управления способом, которым соответствует оболочка. Например:

  ?(pattern-list)   Matches zero or one occurrence of the given patterns
  *(pattern-list)   Matches zero or more occurrences of the given patterns
  +(pattern-list)   Matches one or more occurrences of the given patterns
  @(pattern-list)   Matches one of the given patterns
  !(pattern-list)   Matches anything except one of the given patterns

Можно читать больше о них в этой названной Статье в журнале Linux: Bash Расширенный Globbing.

1
27.01.2020, 21:57
  • 1
    Или xdg-open {a..d} –  Bernhard 15.11.2013, 23:53
  • 2
    @Bernhard - спасибо, я добавил его к Q. Вы, возможно, отредактировали его в себе, я не возражаю. –  slm♦ 15.11.2013, 23:55
  • 3
    Я предполагаю, что OP на самом деле не назвали файлы a...d. –  Joseph R. 16.11.2013, 00:47
  • 4
    @JosephR. - да извините я гашу это сегодня на работе, но затем начал действовать и' не закончил ее, поскольку я запланировал затем. Посмотрите его теперь, это было тем, что я имел в виду. –  slm♦ 16.11.2013, 03:28
  • 5
    Это все еще зависит от имен файлов, являющихся легким соответствовать через однобуквенные шарики. Как я могу адаптировать это решение ситуации, где мне назвали файлы foo, bar и glarb? –  Joseph R. 16.11.2013, 03:30

Теги

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