Não é possível renomear cada 'arquivo' para 'arquivo' (usando xargs)

0

Recebi uma tarefa para executar esses comandos em um arquivo de texto:

  1. Escolha cada segundo campo do arquivo
  2. Classifique e escolha primeiro 3 value s exclusivos
  3. Imprimir o conteúdo de cada value.text ao redirecionar stderr

A coisa com a qual eu vim é

cut cities.txt -f1 | sort| uniq | head -3 | xargs rename "s/*/*.text/" * | xargs cat 2>error.txt

mas isso gera um erro:

Quantifier follows nothing in regex; marked by <-- HERE in m/* <-- HERE / at (user-supplied code).  

Eu também tentei fazer isso com mv * *.text , mas não funciona, dizendo mv: target 'Germany' is not a directory , com "Alemanha" sendo o último valor na lista de value s.

Qualquer um desses comandos é bom para mim, mas explicar por que ambos não funcionam (e como fazê-los funcionar) seria mais apreciado.

    
por Alex F 23.09.2017 / 21:15

1 resposta

1

Caso alguém se depare com esta questão: O comentário de John1024 à pergunta é a solução correta, embora haja uma coisa a notar - as mensagens de erro geradas pela tentativa de imprimir o conteúdo de arquivos não existentes são geradas por xargs rename "s/.*/$&.text/" , portanto, se você precisar redirecionar suas mensagens de erro para um arquivo diferente, será necessário incluir 2>error.text no comando rename e não escrever outro | xargs cat 2>error.txt

    
por Alex F 23.09.2017 / 21:54