电脑技术学习

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

dn001
$ rename -n 'y/A-Z/a-z/' *
Aa.Txt renamed as aa.txt
aA.txT renamed as aa.txt
$ rename 'y/A-Z/a-z/' *
aA.txT not renamed: aa.txt already exists
$ ls
aA.txT aa.txt

  如果您希望在进行重命名的过程中删除现有的文件,那么可以添加 -f 标志。在这个示例中,将得到一个名为 aa.txt 的文件。那么哪个文件是其原始文件呢?因为 rename 按照字母顺序进行处理,后面的 aA.txT 文件是现在的 aa.txt。为什么要使用 -f 呢?如果两个文件是相同的,仅仅是名称不同,rename -f 会删除重复的文件。

  不要删除重复的文件

  文件管理是使用 Unix 系统时非常重要的工作。系统中包含大量的配置文件。您可能拥有非常多的数据文件和个人文件。您可能不时地需要删除或覆盖某个有价值的文件。Shell 和一些文件管理实用工具可以帮助您避免灾难。

  在 Shell 提示符处输入下面的命令。这些命令可以在 bash 中执行,但 zsh 和其他 Shell 也具有类似的选项。

$ alias mv=mv -i
$ alias rm=rm -i
$ set -o noclobber

  前两个命令分别在命令行中将 mv 替换为 mv -i、将 rm 替换为 rm -i。交互式的模式强制您对操作进行确认。

  第三个命令在 Shell 中提供了一定的安全性。启用了 noclobber 之后,您就不会一不小心使用 > 重定向操作符覆盖某个文件:

$ ls
secret.txt
$ cat > secret.txt
bash: secret.txt: cannot overwrite existing file

  要禁用 noclobber,可以输入:set +o noclobber

  。您还可以在任何时候使用 >|(一个小于号加上一个竖线)重定向操作符强制进行覆盖。

标签: