-
Não recursivamente:
for t in *torrent; do [ -d "${t%.*}" ] && mv "$t" "${t%.*}"; done
A sintaxe
${var%pattern}
remove a correspondência mais curta depattern
do final de uma variável. Neste caso, simplesmente remove a extensão. -
Recursivamente (usando
bash
):shopt -s globstar for t in **/*torrent; do [ -d "${t%.*}" ] && mv "$t" "${t%.*}"; done
A opção
globstar
faz com que**
corresponda a quaisquer arquivos e 0 ou mais diretórios. Observe que o acima espera que o diretório de destino seja um subdiretório do diretório pai do arquivo torrent. Portanto, se um arquivo estiver emfoo/bar/baz.torrent
, ele será movido parafoo/bar/baz/baz.torrent
. -
Não recursivamente, criando o diretório se ausente:
for t in *torrent; do mkdir -p "${t%.*}"; mv "$t" "${t%.*}"; done
A opção
-p
informamkdir
para não imprimir nenhum erro se o diretório já existir e para criar diretórios pai conforme necessário. Portanto,mkdir -p foo/bar/baz
também criará os diretóriosfoo
ebar
se eles não existirem. -
Recursivamente, criando o diretório se ausente:
shopt -s globstar for t in **/*torrent; do mkdir -p "${t%.*}"; mv "$t" "${t%.*}"; done