我通常使用以下命令通过 find 删除主目录中的空文件和文件夹:
find /home/tjuh -empty -delete
不过我想排除一个文件夹,即/home/tjuh/.local/share/Steam/steamapps/common/
所以我尝试了:
find . -not -path '/home/tjuh/.local/share/Steam/steamapps/common/' -empty
查看该特定文件夹是否被排除在搜索之外,但它并没有真正按照我想要的方式工作。
有什么建议么?
答案1
参数-path
是一个模式,所以你必须使用通配符,否则它只会完全匹配:
find . -not -path "./.local/share/Steam/steamapps/common/*" -empty
另外,您必须使用绝对路径或相对路径,而不是混合使用它们。上面的是相对路径,下面的是绝对路径:
find /home/tjuh -not -path "/home/tjuh/.local/share/Steam/steamapps/common/*" -empty
答案2
如果你想排除该目录及其所有后代,那么这-prune
就是您所需要的:
find "$HOME" -path "$HOME/.local/share/Steam/steamapps/common" -prune -o -empty -delete
这意味着:如果路径匹配$HOME/.local/share/Steam/steamapps/common
then -prune
(忽略它及其子级)并继续,或者 if -empty
then -delete
(并继续)。
答案3
尝试:
rm `find /home/tjuh -empty | grep -v "^/home/tjuh/.local/share/Steam/steamapps/common/"`