On Wed, 9 Feb 2005, Dag Wieers wrote:
On Wed, 9 Feb 2005, James B. Byrne wrote:
On 8 Feb 2005 at 23:14, Dag Wieers wrote:
Compare this:
echo -e "file1\nfile2\nfile3" | xargs echo '{}' blah
with:
echo -e "file1\nfile2\nfile3" | xargs -i echo '{}' blah
Thank you for the advice on the -i switch. I had tried this earlier. With the -i '{}' argument added then this is the result:
# ll -d ./mqueue/offline drwxr-xr-x 2 root root 4096 Feb 8 14:03 ./mqueue/offline # # cat workmv | xargs -i '{}' mv ./mqueue/'{}' ./mqueue/offline xargs: {}: No such file or directory # # cat workmv | xargs -i '{}' mv ./mqueue/'{}' ./mqueue/offline/ xargs: {}: No such file or directory # # cat workmv | xargs -i '{}' mv --Target-Directory=./mqueue/offline ./mqueue/'{}' xargs: {}: No such file or directory # # cat workmv | xargs -i '{}' mv --Target-Directory=./mqueue/offline/ ./mqueue/'{}' xargs: {}: No such file or directory #
P.S. Also, thank you very much for the depository that you run. I use several of your packages.
Let me show you the manual entry again:
--replace[=replace-str], -I replace-str, -i[replace-str] Replace occurences of replace-str in the initial arguments with names read from standard input. Also, unquoted blanks do not terminate arguments. If replace-str is omitted, it defaults to "{}" (like for 'find -exec'). Implies -x and -L 1.
So you either do:
echo -e "file1\nfile2\nfile3" | xargs -i echo '{}' blah or echo -e "file1\nfile2\nfile3" | xargs -i echo '{}' blah/'{}' or echo -e "file1\nfile2\nfile3" | xargs -i'**' echo '**' blah or echo -e "file1\nfile2\nfile3" | xargs -I '**' echo '**' blah
This is correct:
xargs -i'{}' or xargs -I '{}'
This is not:
xargs -i '{}'
Compare this to the manual entry to verify. The distinction is necessary and important to allow for an '{}' default replace-str. Otherwise xargs wouldn't know whether the next argument is in fact the replace-str or the command to run !
And apparently, on RHEL3 the -I option does not exist:
[dag@horsea dag]$ echo -e "file1\nfile2\nfile3" | xargs -I '**' echo '**' blah xargs: invalid option -- I Usage: xargs [-0prtx] [-e[eof-str]] [-i[replace-str]] [-l[max-lines]] [-n max-args] [-s max-chars] [-P max-procs] [--null] [--eof[=eof-str]] [--replace[=replace-str]] [--max-lines[=max-lines]] [--interactive] [--max-chars=max-chars] [--verbose] [--exit] [--max-procs=max-procs] [--max-args=max-args] [--no-run-if-empty] [--version] [--help] [command [initial-arguments]] Report bugs to bug-findutils@gnu.org.
While on FC3, it should exist, but doesn't work:
[root@emyn ~]# echo -e "file1\nfile2\nfile3" | xargs -I '**' echo '**' blah xargs: invalid option -- I Usage: xargs [-0prtx] [-E eof-str] [-e[eof-str]] [-I replace-str] [-i[replace-str]] [-L max-lines] [-l[max-lines]] [-n max-args] [-s max-chars] [-P max-procs] [--null] [--eof[=eof-str]] [--replace[=replace-str]] [--max-lines[=max-lines]] [--interactive] [--max-chars=max-chars] [--verbose] [--exit] [--max-procs=max-procs] [--max-args=max-args] [--no-run-if-empty] [--version] [--help] [command [initial-arguments]]
So you can forget about -I altogether on RHEL3. And I'll report is as a bug for FC3.
-- dag wieers, dag@wieers.com, http://dag.wieers.com/ -- [all I want is a warm bed and a kind word and unlimited power]