Com alguns shells, você poderia usar globbing + flags extras para corresponder apenas a arquivos em classe um .
Com bash
:
shopt -s extglob
for one in +([0-9])-+([0-9])-+([0-9])-+([0-9])-+([0-9])
do
[[ -f $one ]] && mv -- "$one" first-class
done
+(<PATTERN>)
corresponde a uma ou mais ocorrências do padrão especificado, [[ -f ... ]]
testa o arquivo normal - se sim, é mv
-ed first-class
; Para executar um dry-run , adicione echo
na frente de mv
.
com zsh
:
setopt extended_glob
mv -t first-class [0-9]##(-[0-9]##)(#c4)(.)
x##
corresponde a uma ou mais ocorrências do padrão x
, (#cN)
exige exatamente N
correspondências e (.)
corresponde somente a arquivos
ou:
autoload zmv
zmv -Q '[0-9]##(-[0-9]##)(#c4)(.)' first-class
-Q
ativa os qualificadores de globo nu, para executar a seco adicionar -n
, por exemplo zmv -Qn ...
Se não for necessário filtrar arquivos regulares, você poderá fazer isso sem o teste em bash
:
shopt -s extglob
mv -- +([0-9])-+([0-9])-+([0-9])-+([0-9])-+([0-9]) first-class
e sem o qualificador (.)
em zsh
:
setopt extended_glob
mv -t first-class [0-9]##(-[0-9]##)(#c4)
ou
autoload zmv
zmv '[0-9]##(-[0-9]##)(#c4)' first-class