'''[https://core.tcl-lang.org/tcllib/doc/trunk/embedded/md/tcllib/files/modules/fileutil/fileutil.md%|%fileutil]''', a [Tcllib] module, provides utilties for working with files and directories. ** See Also ** [directory recursion]: [https://www.dcc.uchile.cl/~gnavarro/software/%|%NR-grep: A Fast and Flexible Pattern Matching Tool]: [Unixy minitools]: ** Documentation ** [https://core.tcl-lang.org/tcllib/doc/trunk/embedded/md/tcllib/files/modules/fileutil/fileutil.md%|%fileutil official reference]: [https://core.tcl-lang.org/tcllib/doc/trunk/embedded/md/tcllib/files/modules/fumagic/cfront.md%|%fileutil::magic::cfront official reference]: [https://core.tcl-lang.org/tcllib/doc/trunk/embedded/md/tcllib/files/modules/fumagic/cgen.md%|%fileutil::magic::cgen official reference]: [https://core.tcl-lang.org/tcllib/doc/trunk/embedded/md/tcllib/files/modules/fumagic/filetypes.md%|%fileutil::magic::filetype official reference]: [https://core.tcl-lang.org/tcllib/doc/trunk/embedded/md/tcllib/files/modules/fumagic/rtcore.md%|%fileutil::magic::rt official reference]: [https://core.tcl-lang.org/tcllib/doc/trunk/embedded/md/tcllib/files/modules/fileutil/multi.md%|%fileutil::multi official reference]: [https://core.tcl-lang.org/tcllib/doc/trunk/embedded/md/tcllib/files/modules/fileutil/multiop.md%|%fileutil::multi::op official reference]: ** Modules ** [fileutil::traverse]: See also the modules in the Documentation section, which don't yet have a wiki page ** Commands ** * ::fileutil::fullnormalize path * ::fileutil::test path codes ? msgvar ? ? label ? * ::fileutil::cat ( ? options ? file)... * ::fileutil::writeFile ? options ? file data * ::fileutil::appendToFile ? options ? file data * ::fileutil::insertIntoFile ? options ? file at data * ::fileutil::removeFromFile ? options ? file at n * ::fileutil::replaceInFile ? options ? file at n data * ::fileutil::updateInPlace ? options ? file cmd * ::fileutil::fileType filename * ::fileutil::find ? basedir ? filtercmd ? ? * ::fileutil::findByPattern basedir ? -regexp|-glob ? ? -- ? patterns * ::fileutil::foreachLine var filename cmd * ::fileutil::grep pattern ? files ? * ::fileutil::install ? -m mode ? source destination * ::fileutil::stripN path n * ::fileutil::stripPwd path * ::fileutil::stripPath prefix path * ::fileutil::jail jail path * ::fileutil::touch ? -a ? ? -c ? ? -m ? ? -r ref_file ? ? -t time ? filename ? ... ? * ::fileutil::tempdir * ::fileutil::tempdir path * ::fileutil::tempdirReset * ::fileutil::tempfile ? prefix ? * ::fileutil::relative base dst * ::fileutil::relativeUrl base dst ** What other file-related procs would be useful? ** Other procs that would be useful to add would include wc, tee, head, tail, and perhaps some [awk%|%AWK'ish] type functions ala [Tclx]. [LV]: Anyone have a Tcl version of the dircmp command [https://www.computerhope.com/unix/udircmp.htm]? I don't see it in the cygwin package list, and when I did a casual search on google. ---- [VI] 2003-11-28: Nice of you to ask. There's a list above, other than that: tail -f, split, join. I use [tkcon] as my main shell on a wimpy laptop. Fewer dlls loaded is good.. ---- [LV]: I think some procs emulating functionality (not necessary flags, etc.) of Unix commands such as: * cut - extract one or more columns of text from the input file * join - create the union of one or more files containing columns of data, using a common column as an index * sort - sort a file based on the contents of one or more columns * comm - extract rows of data common, or uncommon, between 2 or more files * uniq - extract unique rows (or count the occurances of unique rows) in a file would be useful. Several of these commands have, at their core, the idea of files being a series of columns, separated by some character or position, and allow a person to select one or more specific columns upon which to perform functions. They represent, in a sense, shortcuts for various [AWK] scripts. ---- [SS]: 2003-12-16: Trying to improve over the Tcl implementation of wc in the Great Language Shootout I wrote this, that seems half in execution time against big files: ====== set text [read stdin] set c [string length $text] set l [expr {[llength [split $text "\n\r"]]-1}] set T [split $text "\n\r\t "] set w [expr {[llength $T]-[llength [lsearch -all -exact $T {}]]-1}] puts "\t$l\t$w\t$c" ====== Output seems to be identical to GNU's wc command. ---- Laif: It should be noted by those who are not familiar with unix - that even in windows xp, if fileutil::find encounters a folder or file named with a single tilde (~), it will append the contents of the person's home directory to the search results. Furthermore, there is a risk of infinite recursion, if somewhere within your home folder, there is also a folder named with a single tilde. <> Package | Tcllib | File