Bash
bash 計數文件和目錄、摘要大小和 EXCLUDE 是 fuse|sshfs 的文件夾
我需要一個 bash 腳本的幫助,該腳本計算 Linux 系統 (Debian) 上指定目錄中的文件和文件夾,但我想排除指定的文件夾。
我有一個
workdir
用不同的腳本文件和文件夾命名的主目錄。在裡面workdir
,我有一個名為mysshfs
. 我使用 fuse/sshfs 在文件夾中掛載一個外部文件mysshfs
夾。現在我開始一些命令來獲取有關文件/目錄計數和文件/目錄大小的資訊,但我想排除目錄
mysshfs
。我的 bash 命令有效:
- 獲得完整尺寸
workdir
| 沒有使用保險絲/sshfs$ du -hs workdir
- 得到 的全尺寸
workdir
,不包括mysshfs
| 使用中的保險絲/sshfs$ du -hs --exclude=mysshf workdir
- 計算文件
workdir
| 沒有使用保險絲/sshfs$ find workdir -type f | wc -l
- 計算文件夾
workdir
| 沒有使用保險絲/sshfs$ find workdir -type d | wc -l
- 中的文件計數
workdir
,不包括mysshfs
| 沒有使用保險絲/sshfs$ find workdir -type f -not -path "*mysshfs*" | wc -l
- 中的文件夾計數
workdir
,不包括mysshfs
| 沒有使用保險絲/sshfs$ find workdir -type d -not -path "*mysshfs*" | wc -l
當我使用命令5 和 6並且遠端目錄安裝在該
mysshfs
目錄下時,命令會掛起。這些命令最終可以工作並顯示正確的輸出,但看起來這些命令仍在排除目錄中查找,即使它們不應該在,因此顯示結果需要很長時間。
我的錯誤在哪裡,或者我在命令 5 和 6 中忘記了什麼?或者我可以為我的結果使用其他命令嗎?
我需要使用 2 個單獨的命令來計算文件和目錄,並排除安裝在 fuse/sshfs 上的指定文件夾以獲得快速結果。
您可以使用
-prune
來避免進入子目錄。請嘗試以下命令:find workdir -path "*/mysshfs/*" -prune -o \( -type f -print \) | wc -l find workdir -path "*/mysshfs/*" -prune \( -type d -print \) | wc -l