Fedora Online Forum

Il forum della comunità italiana di Fedora

#1 31-08-2018 00:58:06

Cody
Greenhorn
Registrato: 31-08-2018
Messaggi: 2

[BASH] Backreferences per il comando ls

Salve,
è il mio primo post e spero di essere nella sezione corretta.
Sono alle prime armi e da un paio di giorni sto incontrando qualche problema con le regex ed in particolare il wildcarding.
Avevo necessità di trovare con il comando find, file che avevano nomi palindromi. Per poter far riconoscere back references al comando find ho dovuto utilizzare -regex impostando -regextype come posix-egrep ma mi chiedevo se fosse possibile farle riconoscere anche all'opzione -name o ad un comando come ls.
Sarebbe possibile ad es. passare una cosa di questo genere '([[:alnum:]])[[:alnum:]]\1' al comando LS?
Grazie

Non in linea

#2 01-09-2018 10:38:41

frafra
Amministratore
Da Trondheim (Norvegia)
Registrato: 14-05-2014
Messaggi: 2'322
Sito web

Re: [BASH] Backreferences per il comando ls

$ ls --help
Usage: ls [OPTION]... [FILE]...

ls accetta uno o più file o cartelle, niente più. In Bash però puoi usare asterischi singoli, doppi, espandere grazie alle parentesi graffe (vedasi {a,b}) ed ha un suo modo di esprimere espressioni regolari:

[[ expression ]]
    Return a status of 0 or 1 depending on the evaluation of the conditional expression expression. Expressions are composed of the primaries described below under CONDITIONAL EXPRESSIONS. Word splitting and pathname expansion are not performed on the words between the [[ and ]]; tilde expansion, parameter and variable expansion, arithmetic expansion, command substitution, process substitution, and quote removal are performed. Conditional operators such as -f must be unquoted to be recognized as primaries.

    When used with [[, The < and > operators sort lexicographically using the current locale.

    When the == and != operators are used, the string to the right of the operator is considered a pattern and matched according to the rules described below under Pattern Matching. If the shell option nocasematch is enabled, the match is performed without regard to the case of alphabetic characters. The return value is 0 if the string matches (==) or does not match (!=) the pattern, and 1 otherwise. Any part of the pattern may be quoted to force it to be matched as a string.

    An additional binary operator, =~, is available, with the same precedence as == and !=. When it is used, the string to the right of the operator is considered an extended regular expression and matched accordingly (as in regex(3)). The return value is 0 if the string matches the pattern, and 1 otherwise. If the regular expression is syntactically incorrect, the conditional expression's return value is 2. If the shell option nocasematch is enabled, the match is performed without regard to the case of alphabetic characters. Any part of the pattern may be quoted to force it to be matched as a string. Substrings matched by parenthesized subexpressions within the regular expression are saved in the array variable BASH_REMATCH. The element of BASH_REMATCH with index 0 is the portion of the string matching the entire regular expression. The element of BASH_REMATCH with index n is the portion of the string matching the nth parenthesized subexpression.

Fonte: man bash.

Puoi giocare quindi con quello che è presente in bash, concatenare condizioni e agire di conseguenza all'interno di un ciclo for.

Non in linea

#3 01-09-2018 18:01:01

Cody
Greenhorn
Registrato: 31-08-2018
Messaggi: 2

Re: [BASH] Backreferences per il comando ls

Ok grazie ^^

Non in linea

Piè di pagina