Rename a file
Rename a file
You are encouraged to solve this task according to the task description, using any language you may know.
You are encouraged to solve this task according to the task description, using any language you may know.
In this task, the job is to rename the file called "input.txt" into "output.txt" and a directory called "docs" into "mydocs". This should be done twice: once "here", i.e. in the current working directory and once in the filesystem root.
Bash
mv input.txt output.txt mv /input.txt /output.txt mv docs mydocs mv /docs /mydocs
DOS
ren input.txt output.txt ren \input.txt \output.txt
Java
import java.util.File; public class FileRenameTest { public static boolean renameFile(String oldname, String newname) { // File (or directory) with old name File file = new File(oldname); // File (or directory) with new name File file2 = new File(newname); // Rename file (or directory) boolean success = file.renameTo(file2); return sucess; } public static void test(String type, String oldname, String newname) { System.out.println("The following " + type + " called " + oldname + ( renameFile(oldname, newname) ? " was renamed as " : " could not be renamed into ") + newname + "." ); } public static void main(String args[]) { test("file", "input.txt", "output.txt"); test("file", File.seperator + "input.txt", File.seperator + "output.txt"); test("directory", "docs", "mydocs"); test("directory", File.seperator + "docs" + File.seperator, File.seperator + "mydocs" + File.seperator); } }
Perl
sub renameFile($$) { my ($oldname, $newname) = @_; return rename($oldname, $newname); } sub test($$$) { my ($type, $oldname, $newname) = @_; print "The following " . $type . " called " . $oldname, . ( renameFile($oldname, $newname) ? " was renamed as " : " could not be renamed into ") . $newname . "."; } my $FileSeperator = ($^O eq "MSWin32") ? "\\" : "/"; test("file", "input.txt", "output.txt"); test("file", $FileSeperator . "input.txt", $FileSeperator . "output.txt"); test("directory", "docs", "mydocs"); test("directory", $FileSeperator + "docs" . $FileSeperator, $FileSeperator + "mydocs" + $FileSeperator); exit;
# Short version my $FileSeperator = ($^O eq "MSWin32") ? "\\" : "/"; rename("input.txt", "output.txt"); rename($FileSeperator . "input.txt", $FileSeperator . "output.txt"); rename("docs", "mydocs"); rename($FileSeperator + "docs" . $FileSeperator, $FileSeperator + "mydocs" + $FileSeperator);
Tcl
Assuming that the Bash example shows what is actually meant with this task (one file and one directory here, one file and one directory in the root) and further assuming that this is supposed to be generic (i.e. OS agnostic):
file rename inputs.txt output.txt file rename docs mydocs file rename [file nativename /inputs.txt] [file nativename /output.txt] file rename [file nativename /docs] [file nativename /mydocs]