diff --git a/tren.rst b/tren.rst index 455bfb3..d7e82f4 100644 --- a/tren.rst +++ b/tren.rst @@ -12,7 +12,7 @@ **tren** is a powerful command line file/directory renaming tool. It implements a variety of sophisticated renaming features than can be a bit complex to learn. For this reason, this document is split into two -general sections: `REFERENCE`_ and `TUTORIAL AND DESCRIPTION`_. If +general sections: "`REFERENCE`_" and "`TUTORIAL AND DESCRIPTION`_". If you are new to **tren**, start by studying the latter section first. It will take you from very simple- to highly complex **tren** renaming operations. Once you've got a sense of what @@ -368,7 +368,7 @@ The ``A=bb`` replacement would be done without regard to case (both ``A`` and ``a`` would match), - where as the ``B=cc`` request would only replace + whereas the ``B=cc`` request would only replace ``B``. -S suffix Suffix to append when making backup copies of existing @@ -542,12 +542,12 @@ status information. There are a number of options you can use to control how this works: - -q Set's "quiet" mode and suppresses everthing except - error messages. + -q Sets "quiet" mode and suppresses everthing except + error messages. - -w # Tells **tren** to wrap lines after ``#`` characters have been - printed. If you're capturing output to a log, set this to a - very high number like 999 to inhibit line wrapping. + -w num Tells **tren** to wrap lines after ``num`` characters have been + printed. If you're capturing output to a log, set this to a + very high number like 999 to inhibit line wrapping. Error and debug messages are sent to ``stderr``. Normal informational messages are sent to ``stdout``. If you want to capture them both in @@ -610,7 +610,7 @@ message to that effect and exit. You can insert include options anywhere you like on the command line -and you can have as many as you like (up to a VERY large number you'll +and you can have as many as you like (up to a large number you'll never hit in practice). Each include reference will be replaced with the contents of that file *at the position it appears on the command line*. @@ -786,8 +786,9 @@ Note that you cannot specify individual, non-adjacent instances. There is no way to use a single **tren** command to replace, say, the only the 2nd and the 4th instance of an ``old`` string. Doing that -requires two renaming requests. The good news is that we can do them -both on a single **tren** invocation. +requires two renaming requests. As we'll see in the section below, +the good news is that we can do them both on a single **tren** +invocation. Multiple Substitutions @@ -798,10 +799,16 @@ system and shell, anyway). As we just saw, this can be handy when a single renaming request can't quite do everything we want. -BUT ... there's a catch. In designing your renaming requests, -you have to keep in mind that **tren** processes the command -line *from left to right*, incrementally constructing the new name -as it goes. For instance:: +BUT ... there's a catch. In designing your renaming requests, you +have to keep in mind that **tren** processes the command line *from +left to right*, incrementally constructing the new name as it goes. +That is, the leftmost renaming request operates on the original file- +or directory name. The next renaming request to the right operates on +*that* new name, and so on. In other words, *each renaming request +modifies the name produced thus far by all the renaming requests to +the left of it on the command line*. + +For instance:: tren.py -r foo=bar -r foo=baz foo1-foo2-foo3.foo4 @@ -895,9 +902,9 @@ ``new`` portions of the renaming request. At this point, both ``old`` and ``new`` are nothing more than - simple strings, although ``old`` may be interpreted as a + simple strings (although ``old`` may be interpreted as a regular expression rather than literally if the option to do so - is in effect. + is in effect). 6) Process each file found on the command line in left to right order, applying each renaming request, in the order it appeared @@ -1155,7 +1162,9 @@ you need a way to distinguish between an ``=`` used in a regular exression and the same symbol used to separate the old and new operands for the ``-r`` option. Where this symbol needs to appear in -a regular expression, it has to be escaped like this: ``\=``. +a regular expression, it has to be escaped like this: ``\=``. (You +can also get around this by changing the ``old/new`` separator +character with the ``-R`` option.) As with literal string renaming, regular expression renaming requests honor both the case sensitivity options (``-C`` and ``-c``) as well @@ -1204,7 +1213,7 @@ N, n, or Enter - No, don't rename this file Y, y - Yes, rename the file - ! - Yes, rename this and all remaining files without asking any more + ! - Yes, rename everything further without asking Q, q - Quit the program @@ -1343,9 +1352,9 @@ tren.py -xr '/$SYSNAME/.*bku$=/FNAME/.old' * -If your system name was "matrix", then the command above would only +If your system name was ``matrix``, then the command above would only rename files whose names began with ``matrix`` and ended with ``bku``. -If your system name were "morton", then the command above would only +If your system name were ``morton``, then the command above would only rename files whose names began with ``morton`` and ended with ``bku``. Notice that we combined a reference to an environment variable within @@ -1383,7 +1392,7 @@ **tren** has many other kinds of renaming tokens. Their structure and use is described in some detail in the section below entitled -`Renaming Tokens: The Gory Details`_. +"`Renaming Tokens: The Gory Details`_". Renaming Token Pitfalls @@ -1393,8 +1402,8 @@ name interaction can be tricky. It can depend on order and on whether the various renaming requests "collide" with each other as a new file name is computed. A similar potential collision exists between -renaming tokens and renaming requests. Recall from `More About -Command Line Pitfalls`_ that renaming tokens are resolved *before* a +renaming tokens and renaming requests. Recall from "`More About +Command Line Pitfalls`_" that renaming tokens are resolved *before* a renaming request is processed. This means that the string substitution (literal or regular expression) of the renaming operation can *conflict with the characters returned when the renaming token was @@ -1417,7 +1426,7 @@ ``My`` gets replaces with ``Your``, but as soon as the second renaming request is processed, the whole string is thrown away and replaced with the final name ``New-MyFile.txt``. This is yet another -example of, **"The Rightmost Renaming Request Wins!"** +example of, **"The Rightmost Renaming Request Wins"**. Renaming Tokens: The Gory Details @@ -1433,7 +1442,7 @@ Renaming tokens are delimited by ``/`` characters, in the form:: - /RenTokenName/ + /RentokenName/ **tren** replaces these tokens with the corresponding information (see descriptions below) wherever you indicated in either the ``old`` or @@ -1466,8 +1475,8 @@ original_name-YYYY-length # Example: myfile-2010-4099 -In short, attributes are just string substitutions wherein the string -tells you something about the file or system on which you're working. +So... *attributes are string substitutions wherein the string +tells you something about the file or system on which you're working*. "Sequences", on the other hand, are just *numbers that represent some ordering principle*. Say you use the sequence renaming token ordered @@ -1486,8 +1495,8 @@ Where, ``01-original_name`` will be the *shortest length* file and ``10-original_name`` will be the *longest length* file. -In short, sequences are just strings of numbers used to put -things in some order. +So... *sequences are strings of numbers used to put things in some +order*. You can always tell the difference between an attribute- and sequence renaming token, because sequence renaming tokens always start with @@ -1579,7 +1588,7 @@ these will return the same value for every file- or directory. -``/DEV/ Returns File- Or Directory's Device ID`` +- ``/DEV/ Returns File- Or Directory's Device ID`` This is the ID of the device containing the file being renamed. You might want to rename files so that all the @@ -1601,19 +1610,19 @@ above, now they're just preceded by the device ID of the where they live with a trailing ``-`` separator. -``/FNAME/ Returns Original File- Or Directory Name`` +- ``/FNAME/ Returns Original File- Or Directory Name`` This is the name of the file- or directory you are renaming *before* you apply any renaming requests. This allows you to create new names based, in part, on the old name:: - tren.py -r=/FNAME/-suffix file | dir ... # Adds "-suffix" to the end of original name - tren.py -r=prefix-/FNAME/ file | dir ... # Adds "-prefix" to start of original name - tren.py -r /FNAME/=newname file | dir ... # Same as "-r=newname" - tren.py -r /FNAME/=/FNAME/ file | dir ... # Does nothing since old- and newname are the same + tren.py -r=/FNAME/-suffix ... # Adds "-suffix" to original name + tren.py -r=prefix-/FNAME/ ... # Adds "-prefix" to original name + tren.py -r /FNAME/=newname ... # Same as "-r=newname" + tren.py -r /FNAME/=/FNAME/ ... # Does nothing since old- and newname are the same -``/GID/ Returns File- Or Directory's Group ID`` +- ``/GID/ Returns File- Or Directory's Group ID`` This is the number for the group to which the file- or directory belongs. One way to use this is to prepend it @@ -1623,7 +1632,7 @@ tren.py -r=/GID/-/FNAME/ * -``/GROUP/ Returns File- Or Directory's Group Name`` +- ``/GROUP/ Returns File- Or Directory's Group Name`` Essentially the same as ``/GID/`` except it returns the *name* of the group rather than the number. Again, this @@ -1632,27 +1641,27 @@ tren.py -r=/GROUP/-/FNAME/ * -``/INODE/ Returns File- Or Directory's Serial Number`` +- ``/INODE/ Returns File- Or Directory's Serial Number`` This is typically an identifier to the directory entry for the file- or directory being renamed. ``/DEV/`` and ``/INODE/`` taken together provide a unique systemwide identifier for the file- or directory being renamed. -``/MODE/ Returns File- Or Directory's Permissions`` +- ``/MODE/ Returns File- Or Directory's Permissions`` This is a numeric string that represents the permissions of the file- or directory being renamed in standard Unix format. -``/NLINK/ Returns Number Of Links To File- Or Directory Being Renamed`` +- ``/NLINK/ Returns Number Of Links To File- Or Directory Being Renamed`` Most operating systems allow a single file to have multiple names. These names are "linked" to the instance of the file. This replacement token is a numeric string representing the number of such links. -``/SIZE/ Returns File- Or Directory's Length In Bytes`` +- ``/SIZE/ Returns File- Or Directory's Length In Bytes`` This is handy if you want a sorted directory listing to list all the files of the same size together. You simply @@ -1663,7 +1672,7 @@ Now all of the files of, say, length 23 will group together in a sorted directory listing. -``/UID/ Returns File- Or Directory's User ID`` +- ``/UID/ Returns File- Or Directory's User ID`` This is the number for the user that owns the file- or directory being renamed. One way to use this is to @@ -1673,7 +1682,7 @@ tren.py -r=/UID/-/FNAME/ * -``/USER/ Returns File- Or Directory's User Name`` +- ``/USER/ Returns File- Or Directory's User Name`` Essentially the same as ``/UID/`` except it returns the *name* of the user rather than the number. Again, this @@ -1686,8 +1695,8 @@ Time-Related Attribute Renaming Tokens ====================================== -Modern operating system actually maintain three different kinds of -such timestamps, ``ATIME``, ``CTIME``, ``MTIME``: +Modern operating system maintain three different kinds of timestamps +for files and directories, ``ATIME``, ``CTIME``, and ``MTIME``: ``ATIME`` refers to the last time the file- or directory was *accessed*. @@ -1715,36 +1724,35 @@ letter of each of the time-related attribute tokens indicates which of the three timestamps above is used to compute the value: - -``/ADAY/, /CDAY/, /MDAY/ Returns Timestamp's Day Of The Month`` +- ``/ADAY/, /CDAY/, /MDAY/ Returns Timestamp's Day Of The Month`` Returns the day of the month of the timestamp in ``dd`` format. -``/AHOUR, /CHOUR/, /MHOUR/ Returns Timestamp's Hour Of The Day`` +- ``/AHOUR, /CHOUR/, /MHOUR/ Returns Timestamp's Hour Of The Day`` Returns the hour of the day of the timestamp in ``hh`` format. -``/AMIN/, /CMIN/, /MMIN/ Returns Timestamp's Minute Of The Hour`` +- ``/AMIN/, /CMIN/, /MMIN/ Returns Timestamp's Minute Of The Hour`` Returns the minute of the hour of the timestamp in ``mm`` format. -``/AMON/, /CMON/, /MMON/ Returns Timestamp's Month Of The Year`` +- ``/AMON/, /CMON/, /MMON/ Returns Timestamp's Month Of The Year`` Returns the month of the year of the timestamp in ``mm`` format -``/AMONTH, /CMONTH/, /MMONTH/ Returns Timestamp's Name Of The Month`` +- ``/AMONTH, /CMONTH/, /MMONTH/ Returns Timestamp's Name Of The Month`` Returns the name of the month of the timestamp in ``Nnn`` format. -``/ASEC/, /CSEC/, /MSEC/ Returns Timestamp's Seconds Of The Minute`` +- ``/ASEC/, /CSEC/, /MSEC/ Returns Timestamp's Seconds Of The Minute`` Returns the seconds of the minute of the timestamp in ``ss`` format. -``/AWDAY, /CWDAY/, /MWDAY/ Returns Timestamp's Name Of The Day`` +- ``/AWDAY, /CWDAY/, /MWDAY/ Returns Timestamp's Name Of The Weekday`` Returns the name of the day of the timestamp in ``Ddd`` format. -``/AYEAR, /CYEAR/, /MYEAR/ Returns Timestamp's Year`` +- ``/AYEAR, /CYEAR/, /MYEAR/ Returns Timestamp's Year`` Returns the year of the timestamp in ``yyyy`` format. @@ -1766,7 +1774,7 @@ (shells) on various systems work differently, the first two of these have to be quoted in different ways. -``/$ENV/ Environment variable`` +- ``/$ENV/ Environment variable`` This token is replaced with the value of the environment variable ``ENV``. If that variable does @@ -1779,7 +1787,7 @@ the current directory. -``/`cmd`/ Arbitrary command execution`` +- ``/`cmd`/ Arbitrary command execution`` This token is replaced with the string returned by executing the ``cmd`` command. Note that newlines are @@ -1825,7 +1833,7 @@ token. -.. Note:: **MORE ABOUT QUOTING** ``/$ENV/`` **AND** ``/`cmd`/`` **SYSTEM RENAMING TOKENS** +.. Tip:: **MORE ABOUT QUOTING** ``/$ENV/`` **AND** ``/`cmd`/`` **SYSTEM RENAMING TOKENS** Both of these constructs are supported directly from most Unix command shells. That is, most Unix shells will @@ -1862,7 +1870,7 @@ tren.py -r=/FNAME/-"/`command option1 option2 argument`/" files ... -``/RAND#/ Random Number Generator`` +- ``/RAND#/ Random Number Generator`` This generates a (quasi) random number string, ``#`` digits wide. @@ -1974,18 +1982,18 @@ sequence and/or provides a string to format the count. -Note that there is no space between the Ordering flag and Type. +Note that there is no space between the *Ordering* flag and *Type*. An *Ordering* flag is mandatory. It will either be ``+`` to indicate an ascending count or ``-`` to indicate a descending count. -The *Type* is mandatory. All available types are described in the -section below entitled, `Types Of Sequence Renaming Tokens`_. +The *Type* is mandatory. These are documented in the section +below entitled, "`Types Of Sequence Renaming Tokens`_". The *Counting Alphabet* is optional. Counting alphabets are ways to count in different bases and even to use something other than just numbers to represent the count. These are described in the section -below entitled, `Let's Learn The Alphabet`_. +below entitled, "`Let's Learn The Alphabet`_". If you omit naming a specific alphabet, **tren** will default to counting in Decimal. Note that you *cannot* omit the alphabet @@ -1997,7 +2005,7 @@ A *Counting Pattern* is optional. Counting patterns are used to do two things: Set the initial value for the count and Describe the layout of how the count should look. This is described in the section -below entitled, `Counting Pattern Format`_. +below entitled, "`Counting Pattern Format`_". If you omit a counting pattern, **tren** will start counting from the zero-th "number" in your chosen alphabet, producing a counting pattern @@ -2048,9 +2056,9 @@ HexLower - Counting in Base 16 using numbers and lower case letters HexUpper - Counting in Base 16 using numbers and upper case letters Lower - Counting in Base 26 using lower case letters - LowerUpper - Counting in Base 52 using first lower- then upper case letters + LowerUpper - Counting in Base 52 using lower- then upper case letters Upper - Counting in Base 26 using upper case letters - UpperLower - Counting in Base 52 using first upper- then lower case letters + UpperLower - Counting in Base 52 using upper- then lower case letters .. TIP:: **The difference between a "base" and a "symbol set".** @@ -2295,8 +2303,26 @@ So, by mixing characters that are both in- and out of the counting alphabet in a counting pattern, you "prime" the sequence renaming - token to start counting with a certain string. This works for all - alphabets, any base, and any symbol set:: + token to start counting with a certain string. Notice that you + can do this in *any* position within the pattern. Say you do + this:: + + tren.py -r=/+CMDLINE::x1x4/ * + + This will produce a counting sequence like this:: + + x1x4 + x1x5 + ... + x110 + ... + x200 + + In other words, a character in any position of the pattern that is + in the counting alphabet will be added to the count. + + + This works for all alphabets, any base, and any symbol set:: tren.py -r=/+FNAME/:Upper:+0S/ * @@ -2397,149 +2423,147 @@ the corresponding first letter: -``/+-ADATE:Alphabet:FormatField/ Sequence based on atime timestamp WITHIN the same date`` +- ``/+-ADATE:Alphabet:Pattern/ Sequence based on atime WITHIN the same date`` -``/+-CDATE:Alphabet:FormatField/ Sequence based on ctime timestamp WITHIN the same date`` +- ``/+-CDATE:Alphabet:Pattern/ Sequence based on ctime WITHIN the same date`` -``/+-MDATE:Alphabet:FormatField/ Sequence based on mtime timestamp WITHIN the same date`` +- ``/+-MDATE:Alphabet:Pattern/ Sequence based on mtime WITHIN the same date`` -These return sequences *within* a given day. This enables -renaming constructs like:: + These return sequences *within* a given day. This enables + renaming constructs like:: - tren.py -r=/MYEAR//MMON/MDAY/-/+MDATE::001/ * + tren.py -r=/MYEAR//MMON/MDAY/-/+MDATE::001/ * -Yielding files named:: + Yielding files named:: - 20100305-001 - 20100305-002 - 20100305-003 - 20100316-001 - 20100316-002 - 20100316-003 - ... + 20100305-001 + 20100305-002 + 20100305-003 + 20100316-001 + 20100316-002 + 20100316-003 + ... -``/+-ATIME:Alphabet:FormatField/ Sequence based on atime timestamp`` +- ``/+-ATIME:Alphabet:Pattern/ Sequence based on atime timestamp`` -``/+-CTIME:Alphabet:FormatField/ Sequence based on ctime timestamp`` +- ``/+-CTIME:Alphabet:Pattern/ Sequence based on ctime timestamp`` -``/+-MTIME:Alphabet:FormatField/ Sequence based on mtime timestamp`` +- ``/+-MTIME:Alphabet:Pattern/ Sequence based on mtime timestamp`` -These return sequences in absolute timestamp order. For example:: + These return sequences in absolute timestamp order. For example:: - touch foo - touch bar - touch baz - tren.py -r =/+MTIME::/-/FNAME + touch foo + touch bar + touch baz + tren.py -r =/+MTIME::/-/FNAME -Yields:: + Yields:: - foo-0 - bar-1 - baz-2 + 0-foo + 1-bar + 2-baz -``/+-CMDLINE:Alphabet:FormatField/ Sequence based on the order of appearance on the command line`` +- ``/+-CMDLINE:Alphabet:Pattern/ Sequence based on the order of appearance on the command line`` -This is nothing more than the command line order:: + This is nothing more than the command line order:: - tren.py -r=/+CMDLINE/-/FNAME::01/-/FNAME/ z b a + tren.py -r=/+CMDLINE/-/FNAME::01/-/FNAME/ z b a -Yields:: + Yields:: - 01-z - 02-b - 03-a + 01-z + 02-b + 03-a -``/+-DEV:Alphabet:FormatField/ Sequence based on the device ID number on which the file- or directory resides`` +- ``/+-DEV:Alphabet:Pattern/ Sequence based on the device ID number on which the file- or directory resides`` -This is the a sequence ordered by which device ID contains the file- -or directory to be renamed. + This is the a sequence ordered by which device ID contains the file- + or directory to be renamed. + + This is not supported on Windows and defaults to an alphabetic + sequence equivalent to ``/+-FNAME.../``. + +- ``/+-FNAME:Alphabet:Pattern/ Sequence based on alphabetic order of all targets on the command line`` + + This returns a sequence based on the alphabetic order of everything + you've named for renaming. Note that this is done on *the fully + qualified path name for each argument*, not just the file- or + directory name itself:: -This is not supported on Windows and defaults to an alphabetic -sequence equivalent to ``/+-FNAME.../``. + tren.py -r=/+FNAME::/-/FNAME/ a/z b/b + + Yields:: + + a/0-z + b/1-b + + This is because the original file name ``a/z`` sorts alphabetically + before ``b/b``. + +- ``/+-GID:Alphabet:Pattern/ Sequence based on the group ID number`` + + This returns a sequence ordered by the ID number of the group to which + the file- or directory belongs. + + This is not supported on Windows and defaults to an alphabetic + sequence equivalent to ``/+-FNAME.../``. -``/+-FNAME:Alphabet:FormatField/ Sequence based on alphabetic order of all targets on the command line`` +- ``/+-GROUP:Alphabet:Pattern/ Sequence based on the group name`` -This returns a sequence based on the alphabetic order of everything -you've named for renaming. Note that this is done on *the fully -qualified path name for each argument*, not just the file- or -directory name itself:: + This returns a sequence ordered by the name of the group to which the + file- or directory belongs. + + This is only supported on Windows if the ``win32all`` Python extensions + are installed. Otherwise, this defaults to an alphabetic sequence equivalent to ``/+-FNAME.../``. - tren.py -r=/+FNAME::/-/FNAME/ a/z b/b +- ``/+-INODE:Alphabet:Pattern/ Sequence based on the inode number`` -Yields:: - - a/0-z - b/1-b - -This is because the original file name ``a/z`` sorts alphabetically -before ``b/b``. + This returns a sequence ordered by the file- or directory inode numbers. + + This is not supported on Windows and defaults to an alphabetic + sequence equivalent to ``/+-FNAME.../``. -``/+-GID:Alphabet:FormatField/ Sequence based on the group ID number`` +- ``/+-MODE:Alphabet:Pattern/ Sequence based on permissions`` -This returns a sequence ordered by the ID number of the group to which -the file- or directory belongs. - -This is not supported on Windows and defaults to an alphabetic -sequence equivalent to ``/+-FNAME.../``. + This returns a sequence ordered by the file- or directories permissions + value. -``/+-GROUP:Alphabet:FormatField/ Sequence based on the group name`` +- ``/+-NLINK:Alphabet:Pattern/ Sequence based on the nlink count`` -This returns a sequence ordered by the name of the group to which the -file- or directory belongs. + This returns a sequence ordered by the number of links associated + with the file- or directory. -This is only supported on Windows if the ``win32all`` Python extensions -are installed. Otherwise, this defaults to an alphabetic sequence equivalent to ``/+-FNAME.../``. - -``/+-INODE:Alphabet:FormatField/ Sequence based on the inode number`` - -This returns a sequence ordered by the file- or directory inode numbers. - -This is not supported on Windows and defaults to an alphabetic -sequence equivalent to ``/+-FNAME.../``. + This is not supported on Windows and defaults to an alphabetic + sequence equivalent to ``/+-FNAME.../``. -``/+-MODE:Alphabet:FormatField/ Sequence based on permissions`` +- ``/+-SIZE:Alphabet:Pattern/ Sequence based on size`` -This returns a sequence ordered by the file- or directories permissions -value. + This returns a sequence ordered by the size of each file- or + directory. + +- ``/+-UID :Alphabet:Pattern/ Sequence based on the user ID number`` + + This returns a sequence ordered by the ID number of the user that + owns the file- or directory. + + This is not supported on Windows and defaults to an alphabetic + sequence equivalent to ``/+-FNAME.../``. -``/+-NLINK:Alphabet:FormatField/ Sequence based on the nlink count`` +- ``/+-USER:Alphabet:Pattern/ Sequence based on user name`` -This returns a sequence ordered by the number of links associated -with the file- or directory. - -This is not supported on Windows and defaults to an alphabetic -sequence equivalent to ``/+-FNAME.../``. - - -``/+-SIZE:Alphabet:FormatField/ Sequence based on size`` - -This returns a sequence ordered by the size of each file- or -directory. - -``/+-UID :Alphabet:FormatField/ Sequence based on the user ID number`` - -This returns a sequence ordered by the ID number of the user that -owns the file- or directory. - -This is not supported on Windows and defaults to an alphabetic -sequence equivalent to ``/+-FNAME.../``. - - -``/+-USER:Alphabet:FormatField/ Sequence based on user name`` - -This returns a sequence ordered by the name of the user that owns -the file- or directory. - -This is only supported on Windows if the ``win32all`` Python extensions -are installed. Otherwise, this defaults to an alphabetic sequence equivalent to ``/+-FNAME.../``. + This returns a sequence ordered by the name of the user that owns + the file- or directory. + + This is only supported on Windows if the ``win32all`` Python extensions + are installed. Otherwise, this defaults to an alphabetic sequence equivalent to ``/+-FNAME.../``. COMMON TASKS AND IDIOMS @@ -2669,7 +2693,7 @@ have to unwind a renaming gone bad, you'll have a record of what was done. -- The use of ``-bf`` is **strongly** discouraged and is provided only +- The use of ``-bf`` is **STRONGLY DISCOURAGED** and is provided only for the most sophisticated and careful users. @@ -2743,7 +2767,7 @@ :: - $Id: tren.rst,v 1.182 2010/04/23 16:13:45 tundra Exp $ + $Id: tren.rst,v 1.183 2010/04/23 18:40:15 tundra Exp $ You can find the latest version of this program at: