#shell #notestoself
If you run this:
% find /Volumes/H6_SD -type d | xargs -n 1 -I % echo mv % /tmp/kn/jams/`php -r "echo uniqid();"`
... you get this:
mv /Volumes/H6_SD/FOLDER01/ZOOM0012 /tmp/kn/jams/63b5c786b0f79
mv /Volumes/H6_SD/FOLDER01/ZOOM0015 /tmp/kn/jams/63b5c786b0f79
mv /Volumes/H6_SD/FOLDER01/ZOOM0016 /tmp/kn/jams/63b5c786b0f79
mv /Volumes/H6_SD/FOLDER01/ZOOM0018 /tmp/kn/jams/63b5c786b0f79
mv /Volumes/H6_SD/FOLDER01/ZOOM0019 /tmp/kn/jams/63b5c786b0f79
mv /Volumes/H6_SD/FOLDER01/ZOOM0027 /tmp/kn/jams/63b5c786b0f79
mv /Volumes/H6_SD/FOLDER01/ZOOM0036 /tmp/kn/jams/63b5c786b0f79
mv /Volumes/H6_SD/FOLDER01/ZOOM0037 /tmp/kn/jams/63b5c786b0f79
mv /Volumes/H6_SD/FOLDER01/ZOOM0038 /tmp/kn/jams/63b5c786b0f79
mv /Volumes/H6_SD/FOLDER01/ZOOM0039 /tmp/kn/jams/63b5c786b0f79
mv /Volumes/H6_SD/FOLDER04/ZOOM0005 /tmp/kn/jams/63b5c786b0f79
mv /Volumes/H6_SD/FOLDER04/ZOOM0006 /tmp/kn/jams/63b5c786b0f79
Which is probably not what you want. You want this:
% find /Volumes/H6_SD -type d | xargs -n 1 -I % sh -c 'echo mv % /tmp/kn/jams/`php -r "echo uniqid();"`'
mv /Volumes/H6_SD/FOLDER01/ZOOM0012 /tmp/kn/jams/63b5c78a56a6b
mv /Volumes/H6_SD/FOLDER01/ZOOM0015 /tmp/kn/jams/63b5c78a61d09
mv /Volumes/H6_SD/FOLDER01/ZOOM0016 /tmp/kn/jams/63b5c78a6d2b1
mv /Volumes/H6_SD/FOLDER01/ZOOM0018 /tmp/kn/jams/63b5c78a78aba
mv /Volumes/H6_SD/FOLDER01/ZOOM0019 /tmp/kn/jams/63b5c78a83cdd
mv /Volumes/H6_SD/FOLDER01/ZOOM0027 /tmp/kn/jams/63b5c78a8ef84
mv /Volumes/H6_SD/FOLDER01/ZOOM0036 /tmp/kn/jams/63b5c78a9a193
mv /Volumes/H6_SD/FOLDER01/ZOOM0037 /tmp/kn/jams/63b5c78aa5bf2
mv /Volumes/H6_SD/FOLDER01/ZOOM0038 /tmp/kn/jams/63b5c78ab11f6
mv /Volumes/H6_SD/FOLDER01/ZOOM0039 /tmp/kn/jams/63b5c78abc518
mv /Volumes/H6_SD/FOLDER04/ZOOM0005 /tmp/kn/jams/63b5c78ac7a31
mv /Volumes/H6_SD/FOLDER04/ZOOM0006 /tmp/kn/jams/63b5c78ad2d04
Notice that the order of the quotes is important (single before double).
Yes, you could avoid all this by simply writing the whole thing in a "proper" scripting language, but I find the flexibility of compound shell commands extremely practical. This approach might not be as portable in a strictly technical sense as different shells have their own nuances, but it is more portable in terms of knowledge. Standard I/O and pipes remain one of the great innovations of software design and I think we should all hone our skills in using them.
