On 31Jan2007 13:38, Stephen Carville <stephen@xxxxxxxxxxxxxx> wrote: | Matthew Anderson wrote: | >I have hundreds of files that start with a * (asterisk) for the | >filename. I am needing to change the asterisk in every file to a _ | >(underscore). Does | > | >Anyone know what command I can use to recursively do that? I appreciate | >any help anyone can provide me. | | Check out the 'find' command to locate the files. Then pipe that that | thru a bit of Perl to create the commands. | | $ ls test | *one *three *two | | $ find test -name "\**"|perl -e | 'foreach(<>){chomp$_;$aa=$_;$aa=~s/\*/_/;print"mv $_ $aa\n";} | | mv test/*two test/_two | mv test/*one test/_one | mv test/*three test/_three | | pipe to a shell for execution... DON'T! You need to escape the asterisk before doing this. And if the files have funny chars you need to do more. A simplistic first cut would be to generate commands like this: mv 'test/*two' 'test/_two' Not perfect, but much much safer. Then think about the consequences of renaming a directory during the process (which your script will try to do as written). -- Cameron Simpson <cs@xxxxxxxxxx> DoD#743 http://www.cskk.ezoshosting.com/cs/ BROCCOLI!! THE ONLY VEGETABLE THAT SOUNDS LIKE AN ADVERB!! - ken@xxxxxxxxxxxxx (Ken Johnson) -- redhat-list mailing list unsubscribe mailto:redhat-list-request@xxxxxxxxxx?subject=unsubscribe https://www.redhat.com/mailman/listinfo/redhat-list