I've to add the content of a file to the end of every prefs.js file.
Tried it with find -name 'prefs.js' -exec more filecontent >> '{}' \; but it didn't work.
Asked
Active
Viewed 271 times
5 Answers
4
Redirection does not happen for each file (this is tricky). The workaround is to spawn a new shell for each file:
find -name 'prefs.js' -exec sh -c 'cat filecontent >> $1;' - '{}' \;
The - is necessary, as it becomes the zeroth ($0) argument to sh
Besides, you have to use cat instead of more. More is a pager which allows users to scroll through a document.
knittl
- 4,072
1
Use xargs:
find -name 'prefs.js' | xargs -n1 bash -c 'cat content_to_be_added >> $1;' -
Fredrik Pihl
- 295
0
It works to write a small shell script cbd.sh
#!/bin/bash
echo "filecontent" >> "$1"
of course yo can replace echo with
cat "somefile"
and to call
find -name 'cbd[0-9].txt' -exec ./cbd.sh '{}' \;
in the same directory.
The syntax of the find command with its -exec is a true monster.
highsciguy
- 369
0
How about
find -name 'prefs.js' -exec dd if=filecontent conv=notrunc oflag=append of='{}' \;
That is assuming filecontent is a file containing what you want to append to the prefs.js files.
Eroen
- 6,561