Можно ли сделать для примера: ls -l *
который печатает содержимое всего каталога.
И добавьте исключение, например, test.cpp
, чтобы распечатать все файлы, кроме test.cpp
.
2 ответа
Вы можете сделать это с помощью 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)
Классический (наивный?) способ сделать это будет
ls -l * | grep -v test.cpp
Однако, как прокомментировал Ламар, GNU ls
имеет опции для игнорирования определенных имен файлов
ls -l -I test.cpp *
Примечание. ls -l *
выводит список файлов в текущем каталоге и файлов в подкаталогах 1-го уровня. Возможно, вы имели в виду ls -l
без *