Можно ли сделать для примера: ls -l * который печатает содержимое всего каталога. И добавьте исключение, например, test.cpp , чтобы распечатать все файлы, кроме test.cpp .

2 ответа2

3

Вы можете сделать это с помощью glob, если у вас включен extglob . Вы можете включить его с помощью:

shopt -s extglob

И вы можете использовать его как:

ls -l !(test.cpp)

и это может быть использовано и другими способами:

ls -l !(*.jpg) # list all files that don't have .jpg extensions

Так как это глобус оболочки, его можно использовать и с другими командами. Один побочный эффект, однако, состоит в том, что он вызывает явное перечисление любых подкаталогов, что означает, что ls также перечислит их. Но с этим легко справиться:

ls -ld !(test.cpp)
2

Классический (наивный?) способ сделать это будет

  ls -l * | grep -v test.cpp

Однако, как прокомментировал Ламар, GNU ls имеет опции для игнорирования определенных имен файлов

  ls -l -I test.cpp *

Примечание. ls -l * выводит список файлов в текущем каталоге и файлов в подкаталогах 1-го уровня. Возможно, вы имели в виду ls -l без *

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .