Я являюсь новым и пробую к изучению Терминальной Команды. Сегодня я столкнулся с некоторой проблемой с подстановочной опцией команды CP. Я записал в Терминале эту команду
cp Downloads/[:alnum:] test/
Здесь, Downloads
каталог от того, где я хочу скопировать файл буквенно-цифрового знака в мой test
каталог. Но Когда я работал, эта команда показала мне:
cannot stat ‘Downloads/[:alnum:]’: No such file or directory
Я хочу знать, как я могу использовать выше Подстановочных Классов для cp
команда. И Также как я могу использовать выше команды Wildcard Character.
Подстановочные знаки
*
?
[characters]
[!characters]
[[:classes:]]
Наиболее часто используемые классы
[:alnum:]-> Match any Alphanumeric Character
[:alpha:] -> Match any Alphabetic Character
[:digit:] -> Match any nummeral
[:lower:] -> Matches any lowercase letter
[:upper:] -> Matches any Uppercase letter
Как я могу использовать их Подстановочный знак и его Классы?
cp
не поддерживает подстановочных знаков отдельно. Расширение подстановочных знаков и шаблонов сделано оболочкой, которая является bash
по умолчанию.
В любом случае, классы символов должны быть указаны в []
- который исключает []
уже окружение их. Как так:
cp Downloads/[[:alnum:]] test/
Однако [[:alnum:]]
будет только соответствовать единственному буквенно-цифровому знаку. Соответствовать всем именам файлов, содержащим только алфавитно-цифровые символы, не может быть, покончили просто подстановочные знаки, уже перечисленные. Для более мощной фильтрации изучите эти find
команда:
find . -regextype posix-extended -maxdepth 1 -regex '.*/[[:alnum:]]*'
В bash
, можно использовать расширенные шарики :
shopt -s extglob
cp Downloads/*([[:alnum:]]) test/
[:alnum:]
на самом деле соответствует отдельному символу от набора :
, a
, l
, n
, u
, m
т.е. данный
$ ls
_?_ 123 7 a abc :file fi:le m
затем
$ ls [:alnum:]
a m
Соответствовать отдельному символу от алфавитно-цифрового класса [:alnum:]
это должно быть [[:alnum:]]
$ ls [[:alnum:]]
7 a m
Соответствовать единственному буквенно-цифровому знаку, сопровождаемому нулевыми или более произвольными символами
$ ls [[:alnum:]]*
123 7 a abc fi:le m
Для соответствия файлу, состоящему только из алфавитно-цифровых символов с помощью оболочки, globbing требует расширенного шарика (extglob
) синтаксис
$ ls +([[:alnum:]])
123 7 a abc m