file - Manipulate file names and attributes
http://purl.org/tcl/home/man/tcl8.4/TclCmd/file.htm
file option name ?arg arg ...?
This command provides several operations on a file's name or attributes. Name is the name of a file; if it starts with a tilde, then tilde substitution is done before executing the command (see the manual entry for filename for details). Option indicates what to do with the file name. Any unique abbreviation for option is acceptable. The valid options are: (see complete man page; here's only notes on selected options).
file atime name ?time?
file attributes name
file attributes name ?option?
file attributes name ?option value option value...?
file channels ?pattern?
file copy ?-force? ?--? source target
file copy ?-force? ?--? source ?source ...? targetDir
file delete ?-force? ?--? pathname ?pathname ... ?
file dirname name
file executable name
file exists name
file extension name
file isdirectory name
file isfile name
file join name ?name ...?
file link ?-linktype? linkName ?target? (requires Tcl8.4)
file lstat name varName
file mkdir dir ?dir ...?
file mtime name ?time?
file nativename name
file normalize name (requires Tcl8.4)
file owned name
file pathtype name
file readable name
file readlink name
file rename ?-force? ?--? source target
file rename ?-force? ?--? source ?source ...? targetDir
file rootname name
file separator ?name?
file size name
file split name
file stat name varName
file system name (requires Tcl8.4)
file tail name
file type name
file writable name
[Hopefully someone will provide some samples to show how these are useful. With the new VFS support in Tcl 8.4, and an appropriate extension, file can operate on much more than just local files (see the One-line web browser in Tcl for example).]
Can someone comment on what happens if the current working directory is on a different drive?
Yes. The question is essentially nonsensical because the current working directory is a per-drive attribute. What happens if I try to open the door, but the other door is open?
Hmm , so the following sequence, in Windows, is nonsense?
cd C:/tcl/lib set fd [open "G:list.txt" "w"] set lst [glob *] puts $fd $lst close $fd
Interesting- I never realized that Windows was so brain-damaged.
LES: One may want to use this proc to catch a quick grasp of and/or memorize all the file commands:
proc fileinfo { myFile } { puts "file name: $myFile" puts "exists: [ file exists $myFile ]" puts "----------------" puts "type: [ file type $myFile ]" puts "size: [ file size $myFile ]" puts "" puts "atime: [ file atime $myFile ]" puts "mtime: [ file mtime $myFile ]" puts "" puts "pathtype: [ file pathtype $myFile ]" puts "dirname: [ file dirname $myFile ]" puts "separator: [ file separator $myFile ]" puts "nativename: [ file nativename $myFile ]" puts "normalize: [ file normalize $myFile ]" puts "rootname: [ file rootname $myFile ]" puts "tail: [ file tail $myFile ]" puts "extension: [ file extension $myFile ]" puts "join: [ file join $myFile ]" puts "" puts "attributes: [ file attributes $myFile ]" puts "owned: [ file owned $myFile ]" puts "readable: [ file readable $myFile ]" puts "writable: [ file writable $myFile ]" puts "executable: [ file executable $myFile ]" puts "" puts "channels: [ file channels $myFile ]" puts "system: [ file system $myFile ]" }
run it: $ fileinfo somefile.txt
See also:
Tcl syntax help - Arts and Crafts of Tcl-Tk Programming - Category Command - Additional file commands