On Thu, 2 Dec 2010, Brad wrote: > On Tue Nov 16, 2010 at 10:22:13AM -0600, gregwm wrote: > >> can anyone show me a bash test to put before mv that will tell whether >> mv will do a simple rename or a copy and delete? for example for mv >> into a --bind mount, df reports both locations as within the same fs, >> yet mv will copy and delete. the best test I can think of would create >> a file, mv and see what happens. can anyone concoct an accurate test >> that doesn't need to create a test file? (or perhaps reveal an mv >> alternative..) > > you can use "stat -c %d FILENAME" -- compare for both files. i just > tested and it works for me showing the real device under a bind mount. Suppose you are moving FILENAME to DIR. I think you want to do both: stat -c %d FILENAME stat -c %d DIR/ Note the slash at the end of DIR/. If DIR is a symlink to a mounted device then these will give different answers and you only want the second of the two answers: stat -c %d DIR stat -c %d DIR/ These give the same answer: stat -c %d DIR/ stat -c %d DIR// Thus, you don't have to worry about using ${DIR}/ in a script where ${DIR} might already include a slash at the end. So I think this is the kind of thing you want to do: FILENAME="$1" DIRNAME="$2" if [ $(stat -c %d "$FILENAME") == $(stat -c %d "${DIRNAME}/") ] ; then echo RENAME else echo COPY/DELETE fi Of course you probably want to do something other than echo those words, but you get the idea. If you come up with something useful, I hope you'll share it here. Best, Mike