rename all the files in a folder..

[LEFT]Hi Guys,

I have 5000 files in a folder. all are .DAT files.
I want to rename them as .TXT files.
I tried the following command.

mv *.DAT *. TXT

But it is throwing an error. Can you please tell me what am i doing wrong.

Thanks & Regards,
Magesh.
[/LEFT]

mv *.DAT *. TXT

Remove the space b/w *. and TXT

for i in *.DAT
do
    mv "$i" "${i%.DAT}.TXT;
done

@panyam,
the space was typo error... Actually i tried without space only..

@danmero,
Can't we run a single command, do we have to use a for loop.. just to understand the mv command.. is it designed to rename or move only single file at a time?

Thanks for your help guys,,

Its more about knowing how '*' works, rather than mv command

if ur directory contains two .DAT files, F1.DAT and F2.DAT, and one TXT file, F.txt

actual command getting fired will be
mv F1.DAT F2.DAT F.txt

and now think if above command makes sense to you.

correct sharad,
But i tired the same command from the command prompt.. it worked fine...
(Ofcourse not the mv command, but ren command)

ren *.DAT *.txt

Is there any substitution for that above command in unix....

DOS command ?
I could not find ren on my system, tried to search and Google/wiki said its dos command

it may be ren or rename.. it depends on the DOS i think

---------- Post updated at 07:33 PM ---------- Previous update was at 07:33 PM ----------

C:\Documents and Settings\222170>help
For more information on a specific command, type HELP command-name
ASSOC    Displays or modifies file extension associations.
AT       Schedules commands and programs to run on a computer.
ATTRIB   Displays or changes file attributes.
BREAK    Sets or clears extended CTRL+C checking.
CACLS    Displays or modifies access control lists (ACLs) of files.
CALL     Calls one batch program from another.
CD       Displays the name of or changes the current directory.
CHCP     Displays or sets the active code page number.
CHDIR    Displays the name of or changes the current directory.
CHKDSK   Checks a disk and displays a status report.
CHKNTFS  Displays or modifies the checking of disk at boot time.
CLS      Clears the screen.
CMD      Starts a new instance of the Windows command interpreter.
COLOR    Sets the default console foreground and background colors.
COMP     Compares the contents of two files or sets of files.
COMPACT  Displays or alters the compression of files on NTFS partitions.
CONVERT  Converts FAT volumes to NTFS.  You cannot convert the
         current drive.
COPY     Copies one or more files to another location.
DATE     Displays or sets the date.
DEL      Deletes one or more files.
DIR      Displays a list of files and subdirectories in a directory.
DISKCOMP Compares the contents of two floppy disks.
DISKCOPY Copies the contents of one floppy disk to another.
DOSKEY   Edits command lines, recalls Windows commands, and creates macros.
ECHO     Displays messages, or turns command echoing on or off.
ENDLOCAL Ends localization of environment changes in a batch file.
ERASE    Deletes one or more files.
EXIT     Quits the CMD.EXE program (command interpreter).
FC       Compares two files or sets of files, and displays the differences
         between them.
FIND     Searches for a text string in a file or files.
FINDSTR  Searches for strings in files.
FOR      Runs a specified command for each file in a set of files.
FORMAT   Formats a disk for use with Windows.
FTYPE    Displays or modifies file types used in file extension associations.
GOTO     Directs the Windows command interpreter to a labeled line in a
         batch program.
GRAFTABL Enables Windows to display an extended character set in graphics
         mode.
HELP     Provides Help information for Windows commands.
IF       Performs conditional processing in batch programs.
LABEL    Creates, changes, or deletes the volume label of a disk.
MD       Creates a directory.
MKDIR    Creates a directory.
MODE     Configures a system device.
MORE     Displays output one screen at a time.
MOVE     Moves one or more files from one directory to another directory.
PATH     Displays or sets a search path for executable files.
PAUSE    Suspends processing of a batch file and displays a message.
POPD     Restores the previous value of the current directory saved by PUSHD.
PRINT    Prints a text file.
PROMPT   Changes the Windows command prompt.
PUSHD    Saves the current directory then changes it.
RD       Removes a directory.
RECOVER  Recovers readable information from a bad or defective disk.
REM      Records comments (remarks) in batch files or CONFIG.SYS.
REN      Renames a file or files.
RENAME   Renames a file or files.
REPLACE  Replaces files.
RMDIR    Removes a directory.
SET      Displays, sets, or removes Windows environment variables.
SETLOCAL Begins localization of environment changes in a batch file.
SHIFT    Shifts the position of replaceable parameters in batch files.
SORT     Sorts input.
START    Starts a separate window to run a specified program or command.
SUBST    Associates a path with a drive letter.
TIME     Displays or sets the system time.
TITLE    Sets the window title for a CMD.EXE session.
TREE     Graphically displays the directory structure of a drive or path.
TYPE     Displays the contents of a text file.
VER      Displays the Windows version.
VERIFY   Tells Windows whether to verify that your files are written
         correctly to a disk.
VOL      Displays a disk volume label and serial number.
XCOPY    Copies files and directory trees.

We do have to process the file name first :wink:

@mac4rfree This are Unix and Linux forums , not related to DOS or Windows.

We assume that the o/p is not in an ftp session (where "REN" is valid).

This shell method should work for any number of files and for filenames containing space characters.

#!/bin/ksh
ls -1d *\.DAT | while read FILENAME
do
        # Command basename to remove the file extension .DAT .
        FILENAME_PREFIX=`basename "${FILENAME}" .DAT`
        echo mv "${FILENAME_PREFIX}.DAT" "${FILENAME_PREFIX}.TXT"
done

Remove the "echo" when happy to actually rename the files.

sorry danmero,, what i was actually trying was to get a unix version of that dos command..

I personally felt that anything that can be done in DOS can be done in unix.. thats y..

In Linux/Unix, we have the rename command, though the problem is not the command but the number of files to be treated.
In *BSD you can do something like

rename .bak .txt *.bak 

to change the extension. You can even use a regex with the rename command :

rename "regex-rule" files