나는 일반적으로 다음 명령을 사용하여 찾기를 통해 홈 디렉터리의 빈 파일과 폴더를 삭제합니다.
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
( -prune
해당 경로와 하위 항목 무시) 계속하고, 그렇지 않으면 -empty
( -delete
그리고 계속)을 의미합니다.
답변3
노력하다:
rm `find /home/tjuh -empty | grep -v "^/home/tjuh/.local/share/Steam/steamapps/common/"`