目标是找到具有给定名称的目录并删除其中的所有文件,保留实际目录
find /home/www/sites/ -iname '_cache' -exec du -hs {} \;
这给了我一个文件列表及其大小
204K /home/www/sites/test.site.com/html/development/Temporary/_cache
904K /home/www/sites/test.site2.com/html/development/Temporary/_cache
是否可以用 Linux find 命令实现?
我尝试了一些东西,它似乎正在工作,这是 Alex 在此处发布的类似解决方案。
它应该只删除在 _cache 目录中并且只在这个目录中找到的文件。它不会从 _cache 目录的子目录中删除任何文件。
当然,在使用之前先尝试一下,而不是 rm,放在那里 ls 或其他无害的东西。
我还没有彻底测试过这个逻辑......但是你可以在循环中做一些事情,比如:
因此,您获得了与您的搜索模式匹配的文件列表,然后通过新搜索循环遍历每个文件以查找要删除的文件。
编写的方式将为您提供一个文件列表,因此您可以将其重定向到一个文件,然后使用 rm 循环遍历该文件。您还可以在 for 循环中将 exec 附加到 find 中。我当然会建议首先按照编写的方式运行以测试逻辑并确保匹配看起来不错。
正确的命令来擦除它
find 有一个 -delete 选项。这将删除所有匹配项。
从手册页