Encontre e renomeie o primeiro resultado no linux?

0

Eu tentei usar este commanline.

find *.txt | head -1 | xargs -0 mv *.txt test.txt

eu recebo.

mv: target ‘02.txt\n’ is not a directory

Qual é o problema: (?

    
por Adam Trinh 03.10.2018 / 04:35

1 resposta

1

Tente isso:

find -name '*.txt' -print0 | head -z -1 | xargs -0 -I '{}' mv '{}' test.txt

O que estava errado e por que isso deveria funcionar:

  • Não há sentido em usar o Google Find se você estiver passando tudo o que deve encontrar de qualquer maneira
  • Se você usar delimitadores nulos para qualquer coisa no pipeline, precisará usá-los para tudo no pipeline
  • Seu uso de xargs não estava substituindo o *.txt pelo nome do arquivo encontrado
por 03.10.2018 / 05:00