Проблема с использованием подстановочных знаков, когда я делаю команду CP в Терминале

Я являюсь новым и пробую к изучению Терминальной Команды. Сегодня я столкнулся с некоторой проблемой с подстановочной опцией команды 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

Как я могу использовать их Подстановочный знак и его Классы?

1
задан 8 February 2016 в 22:36

2 ответа

cp не поддерживает подстановочных знаков отдельно. Расширение подстановочных знаков и шаблонов сделано оболочкой, которая является bash по умолчанию.

В любом случае, классы символов должны быть указаны в [] - который исключает [] уже окружение их. Как так:

cp Downloads/[[:alnum:]] test/

Однако [[:alnum:]] будет только соответствовать единственному буквенно-цифровому знаку. Соответствовать всем именам файлов, содержащим только алфавитно-цифровые символы, не может быть, покончили просто подстановочные знаки, уже перечисленные. Для более мощной фильтрации изучите эти find команда:

find . -regextype posix-extended -maxdepth 1 -regex '.*/[[:alnum:]]*'

В bash, можно использовать расширенные шарики :

shopt -s extglob
cp Downloads/*([[:alnum:]]) test/
3
ответ дан 3 December 2019 в 06:40

[: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
2
ответ дан 3 December 2019 в 06:40

Другие вопросы по тегам:

Похожие вопросы: