Поиск файлов со звездочкой (*) в имени файла

Поскольку !используется в сравнениях и означает НЕ .

Например:

a=3
b=2

[ $a -eq $b ] && echo "Equal"
[ ! $a -eq $b ] && echo "Not equal"
# of cause last comparison is possible to write as:
[ $a -eq $b ] || echo "Not equal"

[ $a -eq $b ]
echo $?
1
[ ! $a -eq $b ]
echo $?
0
0
12.03.2020, 21:13
2 ответа

Правильным решением является использование квадратных скобок [ ]. Конечно, я решил это через 5 минут после публикации. Я надеюсь, что это поможет кому-то в будущем.

$ find./ -type f \( -iname "*[\*]*" \)
0
28.04.2021, 23:20

Будьте осторожны. Находка (1 )жалуется на нечто совсем другое. Скажем, в текущем каталоге у вас есть файлы a, b, c. Если вы позвоните, например.:

find./ -type f \( -iname * \)

то, что findполучает, это./ -type f ( -iname a b c )(оболочка расширяет ' *' перед тем, как передать ей результирующую командную строку, круглые скобки заключаются в кавычки; точно такой же результат для***). Если вы напишете:

find./ -type f \( -iname \* \)

получается ./ -type f ( -iname * ),

0
28.04.2021, 23:20

Теги

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