Откройте все файлы журналов в каталоге и подкаталоге в одной команде

У меня есть каталог ~/temp с файлами журнала. Этот каталог содержит другой каталог ~/temp/aaa, который также содержит несколько журналов. Я хотел бы сразу открыть все файлы журналов. Я делаю

vim -p *

Он открывает файлы в текущем каталоге, и это нормально, но также открывает каталог aaa со списком файлов в содержимом, и я хотел бы опустить его. Также в каталоге aaa файлы не открываются. Я мог бы добавить /aaa/* в команду, но его не очень хорошо, поскольку имя каталога может измениться, и я хотел бы иметь более универсальную команду.

Как перечислить все файлы в каталоге и подкаталоге для vim ?

1
задан 31 January 2018 в 18:30

2 ответа

Вы можете использовать следующую команду, которая откроет vim с вкладкой для каждого файла в текущем каталоге:

vim -p `find -L . -type f -print`

Или следующую команду, которая откроет все файлы в текущем каталоге и все файлы во всех поддиректориях первого уровня текущего каталога

vim -p ./* ./*/*

Вышеуказанная команда основана на запуске vim -p вместе с примером из аналогичного ответа, который можно найти здесь

Несколько (модифицированных) примеров из здесь откроют vim для каждого файла в текущем каталоге, и как только vim будет закрыт, откроется vim снова для следующего файла и т. д .:

find . -xtype f -exec vim {} \;

Или

find -L . -type f -exec vim {} \;
0
ответ дан 17 July 2018 в 21:50

Вы можете использовать следующую команду, которая откроет vim с вкладкой для каждого файла в текущем каталоге:

vim -p `find -L . -type f -print`

Или следующую команду, которая откроет все файлы в текущем каталоге и все файлы во всех поддиректориях первого уровня текущего каталога

vim -p ./* ./*/*

Вышеуказанная команда основана на запуске vim -p вместе с примером из аналогичного ответа, который можно найти здесь

Несколько (модифицированных) примеров из здесь откроют vim для каждого файла в текущем каталоге, и как только vim будет закрыт, откроется vim снова для следующего файла и т. д .:

find . -xtype f -exec vim {} \;

Или

find -L . -type f -exec vim {} \;
0
ответ дан 23 July 2018 в 22:27
  • 1
    Это globstar и extglob в последнем? Если это так, вы должны указать, как включить эти параметры. – dessert 31 January 2018 в 17:59
  • 2
    Если в ваших именах файлов есть пробелы или специальные символы IIRC, которые требуют изменения команды, посмотрите флаг print0 и, возможно, потребуется xargs. – pbhj 31 January 2018 в 18:52
  • 3
    @pbhj - Спасибо за ваш комментарий, который подходит для команды vim -p `find xxx -print` ! Обратите внимание: два примера с find xxx -exec vim {} \l; хорошо работают даже с именами файлов, которые включают пробелы. – Yaron 31 January 2018 в 19:22

Другие вопросы по тегам:

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