Я сталкивался с шаблонами с подстановками и символами подстановки, и меня это особенно интересует [!]
.
Эта конструкция похожа на
[!]
конструкцию, за исключением того, что вместо совпадения с любыми символами в скобках она будет соответствовать любому символу, если она не указана между[
и]
.
rm myfile [!192]
Вышеуказанное, я считаю, удалит все / все файлы, за исключением любых / всех файлов, которые имеют 192 в названии.
Однако меня беспокоит правильное использование этого с расширением файла и, в частности, несколькими условиями.
Каков будет правильный синтаксис в такой ситуации?
rm myfile [!.gif .csv. mp3]
или
rm myfile [!.gif !.csv !.mp3]
Меня беспокоит то, что точка может быть смещена, и поэтому любой файл с .
(который наверняка будет любым из них?) Будет подвергаться манипулированию, когда я пытаюсь вызвать манипулирование конкретными файлами.
Эта конструкция похожа на [ ]
конструкцию, за исключением того, что вместо совпадения с любыми символами в скобках она будет соответствовать любому символу, если она не указана между [
и ]
.
(цитируется по адресу http://www.tldp.org/LDP/GNU-Linux-Tools-Summary/html/x11655.htm )
Теперь; для меня это говорит о том, что тогда единственное число !
является достаточным, и все значения после него содержатся в пределах диапазона.
[!]
она похожа, но не похожа[!]
^
имеет то же значение, что и !
в этом контексте, поэтому [^a]
исключает a
точно так же, как это [!a]
делает: если первый символ после [это a! или ^ тогда любой символ, не заключенный в это, совпадает. ( man bash
)
rm myfile [!192]
удалит myfile
любой файл односимвольный, а не по имени 1
, 9
или 2
.
ls my-pattern
или,echo my-command
чтобы проверить, все ли сделано так, как вы хотите, перед запускомrm