如何使用 linux 命令从我的目录中删除 ~ 表示的文件?

exa*_*ile 2 linux filenames

为什么文件是用 ~ 符号创建的?

通过删除 ~ 符号文件会影响原始文件还是不会?

我的文件:(由linux命令ls获得)

DG_Item122   DG_Item147   DG_Item175   DG_Item200   DG_Item226   DG_Item249~  DG_Item271~  DG_Item293~  DG_Item314~  DG_Item49    DG_Item80
DG_Item122~  DG_Item148   DG_Item175~  DG_Item200~  DG_Item226~  DG_Item25    DG_Item272   DG_Item294   DG_Item315   DG_Item5     DG_Item80~
Run Code Online (Sandbox Code Playgroud)

我的预期输出:

要打印的文件不带波浪号。

Kus*_*nda 5

使用某些文本编辑器编辑文件时,编辑器可能会保存带有后缀的文件备份~。其他编辑器可能会使用其他后缀,但它~是 Unix 上最常用的备份后缀。

如果您觉得不再需要备份,可以删除这些文件:

$ rm *~
Run Code Online (Sandbox Code Playgroud)

如果您希望保留备份文件,但不想在 输出中看到它们ls,那么您可以使用

$ ls -B
Run Code Online (Sandbox Code Playgroud)

或者

$ ls --ignore-backups
Run Code Online (Sandbox Code Playgroud)

(这是同一件事)。这些标志将使ls忽略文件专门匹配 shell 文件名通配模式*~(因为它是如此常见的备份后缀)。要隐藏任何其他文件的列表,请改用 eg --hide='*.bak'(这将隐藏任何带有.bak后缀的文件)。该-B--ignore-backups标志可以被看作是速记的--hide='*~'

为了避免-B每次都输入,您可以将以下内容添加到您的~/.bashrc文件中:

function ls {
  command ls --ignore-backups "$@"
}
Run Code Online (Sandbox Code Playgroud)

这将有效地ls用 shell 函数“替换”命令,该函数调用添加ls--ignore-backups标志的实数。

您可以添加别名而不是 shell 函数:

alias ls='command ls -B "$@"'
Run Code Online (Sandbox Code Playgroud)

...如果你认为这看起来更整洁。

注意:-B/--ignore-backups选项以及 是GNU coreutils 包中可用的--hideGNU 扩展,但无论如何这很可能已经安装在您的 Linux 机器上。lsls

至于别名与外壳函数,bash手册包含短语

对于几乎所有目的,别名都被 shell 函数取代。