如何查找和删除包含在Linux中名称中的特定文本的文件

时间:2020-03-21 11:43:34  来源:igfitidea点击:

查找并删除包含在Linux中名称中的特定文本的文件

我在一个名为"linux_guides"的目录中有以下文件。

$cd Linux_guides/
$ls
apache_config.pdf dhcp_config.pdf ldap_config.pdf php_install.pdf
apache_install.pdf ftp_config.pdf mysql_install.pdf

我完成了安装部分,因此我不需要文件中包含单词"安装"的文件。

而不是发现和删除包含短语"安装"逐个的文件,而是可以使用以下命令一次删除所有它们:

$find -type f -name '*install*' -delete

上面的命令将删除包含"安装"短语的所有文件,并保留其他所有内容。

如果不可用删除选项,则可以使用以下任何一个命令:

$find -type f -name '*install*' -exec rm {} \;

或者,

$find -type f -name '*install*' -exec rm {} +

我们可能会问我们可以使用如下所示的"RM"命令执行相同的操作:

$rm *install*

是的,它会这样做。
但是,rm * install *命令将删除包含当前目录中的文件名中包含"安装"的所有文件,并且如果任何目录名称包含"安装",则会抱怨。
但是,"find -type f"命令将递归地搜索当前目录和所有子目录中的文件。

如果我们只想查找文件(未删除),只需删除选项--delete或者-exec rm {} ;或者 - 在上面的命令中的-exec rm {} +。

例如,以下命令只能找到包含其名称中包含字符串"安装"的文件:

$$find -type f -name '*install*'
./mysql_install.pdf
./apache_install.pdf
./php_install.pdf

查找并删除"不"的文件包含在Linux中的名称中的特定文本

我们知道如何删除包含其名称中包含特定短语的文件。
现在让我们看看如何在其名称中查找和删除没有特定短语或者字符串的文件。

为此,请在Find命令中添加"-not"参数,如下所示。

$find -type f -not -name '*install*' -delete

上面的命令不会删除名称中具有"安装"短语的文件并删除其他所有内容。

如果不可用删除选项,则可以使用以下任何一个命令:

$find -type f -not -name '*install*' -exec rm {} \;

或者,

$find -type f -not -name '*install*' -exec rm {} +