Можно ли добавить исключение с помощью «ls -l *»

Можно ли добавить исключение с помощью «ls -l *»

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

решение1

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

shopt -s extglob

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

ls -l !(test.cpp)

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

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

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

ls -ld !(test.cpp)

решение2

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

  ls -l * | grep -v test.cpp

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

  ls -l -I test.cpp *

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

Связанный контент