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

user1179459
fonte

Respostas:

1

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

ls [BD]* | sed 's/.*/mv & ~&/' | sh
Guru
fonte
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