Найти и переименовать первый результат в Linux?

285
Adam Trinh

Я попытался использовать этот commanline.

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

я получил.

mv: target '02 .txt \ n 'не является каталогом

Что не так :(?

0
Знайте о нашем родственном сайте https://unix.stackexchange.com/, который отвечает на вопросы как по Unix, так и по Linux (все flavo (u) rs) Mawg 5 лет назад 0

1 ответ на вопрос

1
Joseph Sible

Попробуйте это вместо этого:

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

Что было не так и почему это должно работать вместо:

  • Там нет смысла использовать поиск, если вы передаете все, что он должен найти в любом случае
  • Если вы используете нулевые разделители для чего-либо в конвейере, вам нужно использовать их для всего в конвейере
  • Ваше использование xargs не заменяет *.txtимя найденного файла.

Похожие вопросы