Ok, muito obrigado Júlio, minha dúvida era se, como vc diz, dava para fazer em uma ou duas linhas com sed e redirecionamento, mas pelo visto não. Se puder dar uma explicação da linha: "ArqNov=${Arq:0:Corte}.$Ext" se trata-se de variáveis de ambiente eu desconheço, poderia me passar algum lugar onde as referencie, assim como as ERs para testar cadeias numéricas? Obrigado.
-----Mensagem original----- De: shell-script@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] nome de Julio C. Neves Enviada em: terça-feira, 10 de abril de 2007 14:45 Para: shell-script@yahoogrupos.com.br Assunto: Re: [shell-script] Cortar nome de arquivo. Aê Wagner, for Arq in * do [ ${#Arq} -le 25 ] && continue Ext=${Arq#*.} Corte=$((24-${#Ext})) ArqNov=${Arq:0:Corte}.$Ext [ -f $ArqNov ] && { echo $Arq já foi cortado antes continue } mv $Arq $ArqNov done OBS: 1 - Não foi testado 2 - Se o arquivo chamar-se wagner.tar.gz a extensão será considerada como tar.gz. Se quiser que seja só gz fazer Ext=${Arq##*.} 3 - Apesar de vc ter falado em extensões com 3 caracteres, neste caso fiz com extensões de qq tamanho para ficar genérico. 4 - Se todos os arquivo tiverem mais de 25 char e todas as extensões tiverem sempre 3 caracteres, isso pode ser bastante simplificado. Bom proveito, Julio :wq Em 10/04/07, Wagner Brasileiro Cardoso <[EMAIL PROTECTED]> escreveu: > > Boa tarde, > > Estou em dúvida de qual método devo usar para reduzir uma lista de > arquivos > a somente 25 caracteres por nome de arquivo, minha principal dúvida é como > fazer para limitar a renomeação aos primeiros 21 caracteres acrescidos de > "."e extensão totalizando 25 caracteres que é o que o dispositivo me > permite > ler. > Tenho a impressão que estou fazendo uma pergunta ridícula, mas no momento > não me vem nada na cabeça. > Pensei em criar uma lista dos nomes e ir processando linha a linha, mas me > falta a forma de limitar ao tamanho da forma anterior que eu falei. > > Obrigado, > > Wagner Brasileiro > > > -- Abraços, Julio http://www.julioneves.com - Um livro sobre Bash completo e on-line :wq [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]