Можно ли сделать например: 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
без*