echo "mbar bar\nmbaz baz" | xargs mv
В xargs
вы должны использовать параметр -t
, чтобы узнать, что происходит. Итак, в приведенном выше случае, если бы мы вызывали xargs
с помощью -t
, что мы видим:
mv mbar bar mbaz baz
Очевидно, это неверно. Случилось так, что xargs
, как голодный крокодил, съел все аргументы, подаваемые ему через трубу echo
. Итак, вам нужен способ ограничить передачу аргументов крокодилу. А так как вы запрашивали построчно, вам нужна опция -l
или -L
для POSIX.
echo "mbar bar\nmbaz baz" | xargs -l -t mv
POSIX-способ:
echo "mbar bar\nmbaz baz" | xargs -L 1 -t mv
mv mbar bar
mv mbaz baz
И это то, что вы хотели. HTH
Я думаю, что инструмент, который вы ищете, это vimdiff
vimdiff file.copy file.original