Ok, this is my third try posting this, maybe I\'m asking the wrong question!!
It\'s been a few years since I\'ve done any shell programming so I\'m a bit rusty...
your command
find -mindepth 3 -maxdepth 3 -type d | grep "New Parts" | xargs -0 ln -s -t /cygdrive/c/Views
have argument "-0" to xargs but you did not tell find to "-print0" (if you did grep could not work in the pipe inbetween). What you want is the following I guess:
find -mindepth 3 -maxdepth 3 -type d | grep "New Parts" | tr '\012' '\000' | xargs -0 ln -s -t /cygdrive/c/Views
The tr
command will convert newlines to ascii null.
Use a for loop.
for name in $(find $from_dir -mindepth 3 -maxdepth 3 -type d); do
ln -s $name $to_dir
done
Xargs has issues where the input from the pipe goes at the end of the command. What you want is multiple commands, not just 1 command.
My experience with doing things within the find command can sometimes be slow, although it does get the job done.
I think you can do this all within your find command. OTTOMH:
find -mindepth 3 -maxdepth 3 -type d -name "*New Parts*" -exec ln -s -t /cygdrive/c/Views {} \;
Hope I remembered that syntax right.