Erstes Ergebnis in Linux finden und umbenennen?

421
Adam Trinh

Ich habe versucht, diese Commanline zu verwenden.

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

ich erhalte.

mv: target '02 .txt \ n 'ist kein Verzeichnis

Was ist los :(?

0
Beachten Sie unsere Schwesterseite https://unix.stackexchange.com/, auf der Fragen zu Unix und Linux beantwortet werden (alles flavo (u) rs). Mawg vor 5 Jahren 0

1 Antwort auf die Frage

1
Joseph Sible

Versuchen Sie es stattdessen:

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

Was war falsch und warum sollte das stattdessen funktionieren?

  • Es ist sinnlos, find zu verwenden, wenn Sie an allem vorbeikommen, das es trotzdem finden soll
  • Wenn Sie Nullbegrenzer für Elemente in der Pipeline verwenden, müssen Sie diese für alles in der Pipeline verwenden
  • Ihre Verwendung von xargs ersetzt nicht *.txtden Namen der gefundenen Datei