我想删除机器上每个用户的 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 的手册页。