On Thu, Nov 30, 2000 at 01:17:06PM -0600, Robert Guthrie wrote: > On Thursday 30 November 2000 12:51, Miquel van Smoorenburg wrote: > > > This is Unix, so you use several tools together to accomplish > > whatever you want: > > > > $ mkdir collapsed > > $ cd collapsed > > $ find /original/path -print0 | xargs -0 -n 1 ln -s > > > > [untested ofcourse!] > > > > Mike. > > actually, > > find /original/path -type f -exec ln -s {} . \; > > will do the same thing as your find + xargs program. > "find" was a hard untility to wrap my brain around, but I evenutally got it, > and now I use it for all sorts of quick one-liners like this. > Broken down, this is what the above command does (for the uninitiated): > > find /original/path : starting in the directory /original/path, search for > all files under that directory. > > -type f : an argument to find which narrows down the search to > non-directories and non-symbolic links (most any type of file). Normally, it > will return directories and symbolic links as well as other types of files. > > -exec ln -s {} . \; This one is the hard one. -exec executes the rest of > the line (up to the \;), using each file that the find command returns as > that commands argument. the {}'s are like a variable that represent that > filename. So if find /original/path -type f returns > /original/path/somedir/myfile.txt, the command to be executed would be > ln -s /original/path/somedir/myfile.txt . > > Finally, note the "." at the end of the ln command. That tells ln to make a > link of the first argument in the current working directory (where you were > when you executed the find command). It will use the same file name as the > original file. > > The ";" is to tell find where the argument to -exec finishes. You can add > other command line arguments after that. The reason for the "\" before it is > that your shell will look at the semi-colon and think that it's for > separating two commands on the same line (try this to see what the shell does > with ;'s : cd /etc ; ls). The shell always does this with semi-colons > before executing a command, so you have to hide it from the shell by > "escaping" it.
nice job! > Man. I think I should go do some of what my employer is paying me for now > instead of providing unsolicited "find" tutorials. Read the find man page > for more usefull options. on the other hand, if you could flesh this out a bit, we'd love to include it at our newbieDoc site to that next week's newbie won't have to clutter debian-user with a "how does 'find' work" question... ? can you help us? -or them? -- [EMAIL PROTECTED] *** http://www.dontUthink.com/ volunteer to document your Debian experience for next week's newbies -- http://www.eGroups.com/messages/newbieDoc