使用通配符在 Linux 机器上查找(和删除)匹配的文件

使用通配符在 Linux 机器上查找(和删除)匹配的文件

我想删除机器上每个用户的 Awstats 特定配置文件。删除它们的最佳方法是什么?最好只用一行代码?

所有文件均位于以下位置/home并具有以下结构:

/home/{username1}/domains/{domain1}/public_html/awstats/.data/awstats.{domain1}.conf
/home/{username1}/domains/{domain2}/public_html/awstats/.data/awstats.{domain2}.conf

/home/{username2}/domains/{domain1}/public_html/awstats/.data/awstats.{domain1}.conf

有些/home/{username}/domains/文件夹有多个域子文件夹。

答案1

你有没有尝试过

rm /home/*/domains/*/public_html/awstats/.data/awstats.*.conf

警告:如果有一个文件的名称类似于

/home/phred/domains/sci-fi/public_html/awstats/.data/awstats.fantasy.conf

也就是说,两次出现的{domain1}不匹配,那么上面的命令也会将其删除。这有问题吗?

PS 除非验证 match 的两次出现{domain1}是否是您要问的问题,或者我遗漏了其他内容,否则这个问题与正则表达式 (regex) 无关。当在 shell 命令行上使用 、 和 (带有匹配的 ) 时*?它们[]称为通配符

答案2

运行/home以下命令

find . -name 'awstats*conf' | xargs rm

在将结果通过管道传输到运行之前,xargs请先find . -name 'awstas*.conf验证它是否仅列出了您要删除的文件。xargs rm确认这一点后,再通过管道传输到。

如上find所示,when 的使用将递归查找与指定正则表达式匹配的文件。有关更多信息,请查看 find 和 xargs 的手册页。

相关内容