Я хотел бы сделать что-то вроде* но за исключением некоторых файлов
cat *
, но который будет игнорировать файлы, которые соответствуют шаблону __*__
.
Каков наилучший способ для этого?
Я хотел бы сделать что-то вроде* но за исключением некоторых файлов
cat *
, но который будет игнорировать файлы, которые соответствуют шаблону __*__
.
Каков наилучший способ для этого?
Если включить extglob
в Баш (shopt -s extglob
), вы можете использовать
cat !(excluded_file|excluded_*_pattern)
extglob
модели:
|
or/alternatives
?(pattern-list)
Matches zero or one occurrence of the given patterns
*(pattern-list)
Matches zero or more occurrences of the given patterns
+(pattern-list)
Matches one or more occurrences of the given patterns
@(pattern-list)
Matches one of the given patterns
!(pattern-list)
Matches anything except one of the given patterns
Возможно, не лучший путь, но:
tcsh -c 'echo ^__*__'
$ ls
__a__ __b__ c
$ cat *
aaaaaaaaaaaaa
bbbbbbbbbbbbbb
ccccccccccccccc
$ cat [!_]
ccccccccccccccc
От my today's answer for similar question
ls --ignore="__*__" --quoting-style=shell | xargs cat
К сожалению, реализация Дарвина 'ls' не включает' --ignore' или '--quoting-style' –
Я бегу под Darwin-файл 'extglob' кодом включения дает' -bash: shopt: extglob: недопустимый параметр name' –
К сожалению, я '-o' первоначально (смешали с 'set -o'), вы попробовали его с исправленными' -s'? – Kevin