Find

find 刪除了頂級目錄和內容

  • August 31, 2022

我跑了

/bin/find /home/user/myfiles \! -name '.htaccess' -exec rm -r {} \;

如果不存在,它會刪除目錄中的所有內容 myfiles目錄myfiles本身。.htaccess我做錯了什麼?

如果這是 GNU find 或其他一些版本的 find(如 macOS Monterey),它同時具有 -delete 和 -mindepth ,所以我將從那裡開始。

/bin/find /home/user/myfiles -mindepth 1 -delete

如果它是其他一些發現,我會嘗試指定路徑更像這樣。:

/bin/find /home/user/myfiles/* 

which globs 您想要保留原樣的目錄下的內容,並在該目錄下進行查找。

使用諸如 find 之類的工具是一個好主意,它本質上是發現自己的行動論據,以首先使用非破壞性的方式執行它們,例如簡單地列出事物或在刪除它們之前對它們執行 ls 操作。

find在起始目錄本身開始搜尋。也就是說,如果你有

foo/
   a
   b

你跑

find foo

你會得到

foo
foo/a
foo/b

因此,當您這樣做時-exec -r {} \;,它甚至會刪除起始目錄。您可以做的是告訴find不要包含起始目錄:

find /home/user/myfiles ! -path /home/user/myfiles -exec rm -r {} \;

引用自:https://unix.stackexchange.com/questions/715648