>From: Ed Gould <edgould1948 at comcast.net> >I am spending way too much time doing a repetitive tasks of moving >files around. >I guess I need some sort of scripting language that will allow me to >automate this task. I know I will never be able to totally automate >it as (at times) it needs human judgement, but I can live with the >"few" exceptions. > >Simply put I need to move a file from one folder to another folder >(BUT) if there is a duplicate don't move it. > The from folder will remain constant but the receiving folder will >change depending on the first character of the file. > >I am somewhat familiar with one or two other scripting languages but >have zero knowledge on anything Apple might have. > >Can someone suggest a scripting language that will be able to test >easily if a file exists and *move* files from foldera to folderb (or >"c" or "d" or "e" etc) There are plenty of choices. 'Applescript' is a language for non-programmers (so it used to say) and to someone who has been a programmer for 40 years (me) it's as clear as mud. The non-programmers it's designed for seem to have more success with it. 'Automator' seems to follow in its footsteps. 'Awk' is often overlooked as a language, but it good for working with data rather than manipulating the filesystem tree. 'Perl' is well known for its similarity to line noise, so if you're not a programmer, the learning curve is enormous. That's not to say it isn't a superb language for very many things. Like 'awk' its forte is data handling rather than file management. csh/tcsh - two Unix 'Shell' languages. If you're used to languages with language elements neatly grouped with parentheses and brackets, these look like what you're used to. But they're badly implemented in some areas and once you get past the basics you can find some things that just aren't possible because there's no way to represent what you need. sh/ksh/bash/posix-shell/zsh - a 'family' of vaguely related Unix Shell languages based on the almost original Unix Bourne Shell (by Stephen Bourne) that use the same type of syntax but with different capability extensions. The main differences are in many cases only to do with interactive use rather than scripting. In 'sh' shells, you would need something like below. '#' starts a comment. I've added an unnecessary '#' to the beginning of each comment-only line to help re-format the lines. Comment text is indented with the active statement lines. This is in short-form style. if...then...fi can be used. Note that to move a file from foldera to folderb, both must be writable. src=path_of_foldera dst=path_of_folderb [ -d $dst ] || exit # test ([ ....]) that the variable 'dst' contains the path to a directory (-d) # # '||' means 'or' or 'otherwise' cd $src || exit # 'cd' will fail if its argument is not the path of an existing directory [ -w $src -a -w $dst ] || exit # -w is the 'test for writeable' flag, -a here means 'and' for file in *; do # '*' expands to all filenames that don't start with a '.' # # Each time round, variable 'file' is loaded with the next one [ -f $file ] || continue # test if the file whose name is in variable # # 'file' is a plain file (not a directory etc.) # # skip and go to next if it isn't [ -f $dst/$file ] || mv $file $dst/$file # see the pattern of it? done # end of the loop Of these, only Perl can be made to do your sort of task itself, and that requires the use of the File module. The rest end up using another program to do the actual work. Applescript uses the Finder, the others would use the Unix utility 'mv'. This means that for general use, for Applescript you also need to learn the script capabilities of all the OS X utilities; for the others you need to learn the Unix commands. There are many Unix command books but few on Applescript, and less on the scripting capabilities of OSX apps. David -- David Ledger - Freelance Unix Sysadmin in the UK. HP-UX specialist of hpUG technical user group (www.hpug.org.uk) david.ledger at ivdcs.co.uk www.ivdcs.co.uk