Joshua Baker-LePain wrote:
On Sun, 25 Sep 2005 at 6:52pm, Kai wrote
Joshua Baker-LePain wrote:
*However*, that will keep the directory structure. Why not just use cp?
find ../ -name '*.mp3' -o -name '*.ogg' -print0 | xargs -0 -i cp {} .
xargs takes whatever comes in stdin and puts in after the commands which follow it. If you give 'xargs' the '-i' flag, it instead takes what comes in on stdin and puts it whereever you put the '{}' (note the location of the ). 'find | xargs' is *much* faster than 'find -exec' b/c you're not spawning a new process for every hit. The '-print0' to find and '-0' to xargs use nulls to delimit each entry rather than whitespace -- this lets the command work on files/directory names with spaces in them.
Thank you soo much, I am very grateful. This has given me headache, really. You solved my problem. I do not fully understand the command: the argument \ standing before {} and the .
This confuses me a little bit because my understanding was that \ closed the command line and there should be nothing after. Also it maid me understand how to use the -exec. Again thank you.
find ../ -name '*.mp3' -o -name '*.ogg' -exec cp {} . ;