Como renomear arquivos em uma pasta usando o comando ls output como um pipe?


0

Estou usando o shell GNU / Linux e BASH,

O que eu queria fazer é no servidor é

Eu preciso ser capaz de baixar os arquivos informando com B * e D * e renomeá-los para ~ B * e ~ D * (mesmo nome de arquivo apenas ~ na frente)

Eu escrevi a seguir, que funciona bem para a parte de download idealmente, eu gostaria que ele usasse a saída de comando ls também, mas não sei como fazer isso.

cd inbox
get D*
get B*
ls B*|rename $0 ~B.* 
bye

Qualquer ideia ?

idealmente, o que eu gostaria de fazer é o comando ls para enviar a lista de arquivos um por um para o comando get e, depois que o comando get for concluído, eu quero que o comando rename seja executado renomeando os arquivos do servidor

Respostas:


1

Não execute isso dentro da sua sessão ftp. Saia e execute:

ls [BD]* | sed 's/.*/mv & ~&/' | sh

alguém tem alguma idéia ou qualquer guia de referência para o que eles significam em /s.*/ o que é "s" espero que seja uma expressão regular, mas estou acostumado a php exp regular, mas isso parece ser totalmente diferente ... qualquer link por favor para este ref? ou seja, renomeie "s / * // g" * .mp3
— user1179459 18/10/12

. * corresponderá ao seu nome de arquivo inteiro e, na seção de substituição, o comando mv será gerado. Este comando mv é executado usando um shell.
— Guru #

Você pode explicar isso? Por que é tão importante não executar dentro da sessão ftp.
— James Mertz

@KronoS meu erro, pode muito bem fazer parte da própria sessão ftp com uma exclamação (!) No início de ls.
— Guru

Se for executado na sessão ftp (sem o!), Ele tentará renomear no servidor remoto ou apenas falhará.
— HayekSplosives
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.