电脑技术学习

对话 UNIX,第 7 部分: 命令行惯用语

dn001

  货币替换

  有许多 Unix 实用工具可以对文件进行修改。在大多数情况下,可以将经过修改的内容发送到标准输出,您可以使用重定向操作符对其进行进一步的处理(使用管道“|)或捕获其中的结果(使用 > 或 >> 操作符)。

  其他的实用工具(那些通常可以一次处理许多文件的工具)可以出于安全考虑而保留原始文件,并为修改后的内容生成一个新的文件。例如,您可以直接在命令行中使用 Perl 对文件进行处理。以下命令:

$ perl -i.bak -pe 's/dollar(s?)/buck1/g' file.txt

  将“dollar替换为“buck,将“dollars替换为“bucks。perl -i 命令在原地对 file.txt 进行修改,而 perl -i.bak 则为原始文件建立一个副本,并在其名称后面添加 .bak,以区别于新的、经过修改的版本。因此,如下的命令:

perl -i.bak -pe 's/dollar(s?)/buck1/g' *

  将为当前目录中每个文件创建一个备份。假设有文件 file1.txt、file2.txt 和 file3.txt,那么您将得到 file1.txt.bak、file2.txt.bak 和 file3.txt.bak。错误操作时常发生,所以建立备份是明智之举。

  如果出现了错误,并且必须恢复原始文件,您只需输入:mv file1.txt.bak file1.txt

  。但是,如果有数百个文件 需要进行重命名,那又应该怎么办呢?当然,您并不希望输入数百个单独的 mv 命令。相反,您可以输入下面的命令:

foreach file in (*.txt)
do
 mv $file.bak $file
done

  它适用于一些简单的情况,如本示例中的情况。然而,这类任务非常常见,可以使用另一种特殊的实用工具,它能够更快速地完成这项任务。以下命令:

标签: