我有一個存儲庫,我們需要監視並跟蹤其使用情況。
我們有規則定期清除舊文件。
find命令用於識別舊文件
查找/ SRV /關係/關係數據/存儲/ -name「* nupkg」 -mtime 175型的F使用find和du來顯示文件夾大小
上述命令是用於與RM到刪除文件。
讓我們假設find命令的輸出是這樣的:
/srv/nexus/nexus-data/storage/nish-nuget-test/Microsoft.Deployment.WindowsInstaller/1.0.0/Microsoft.Deployment.WindowsInstaller-1.0.0.nupkg
/srv/nexus/nexus-data/storage/nish-nuget-test/Microsoft.Deployment.WindowsInstaller/1.0.1/Microsoft.Deployment.WindowsInstaller-1.0.1.nupkg
/srv/nexus/nexus-data/storage/nish-nuget-test/MSBuild.ILMerge.Task/1.0.5/MSBuild.ILMerge.Task-1.0.5.nupkg
/srv/nexus/nexus-data/storage/nish-nuget-test/Microsoft.Bcl/1.1.10/Microsoft.Bcl-1.1.10.nupkg
/srv/nexus/nexus-data/storage/nish-nuget-test/NuGet.CommandLine/3.3.0/NuGet.CommandLine-3.3.0.nupkg
/srv/nexus/nexus-data/storage/nish-nuget-test/NuGet.CommandLine/3.4.3/NuGet.CommandLine-3.4.3.nupkg
/srv/nexus/nexus-data/storage/nish-nuget- test/NuGet.CommandLine/2.8.5/NuGet.CommandLine-2.8.5.nupkg
/srv/nexus/nexus-data/storage/nish-nuget-test/NuGet.CommandLine/2.8.3/NuGet.CommandLine-2.8.3.nupkg
/srv/nexus/nexus-data/storage/rnaibnexus-nuget-releases/Testing.TestNugetNamingConvention.App/2.0.3/Testing.TestNugetNamingConvention.App-2.0.3.nupkg
/srv/nexus/nexus-data/storage/rnaibnexus-nuget-releases/Testing.TestNugetNamingConvention.App/2.0.0/Testing.TestNugetNamingConvention.App-2.0.0.nupkg
/srv/nexus/nexus-data/storage/rnaibnexus-nuget-releases/Testing.TestNugetNamingConvention.App/1.2.0/Testing.TestNugetNamingConvention.App-1.2.0.nupkg
/srv/nexus/nexus-data/storage/rnaibnexus-nuget-releases/Testing.TestNugetNamingConvention.App/1.0.2/Testing.TestNugetNamingConvention.App-1.0.2.nupkg
/srv/nexus/nexus-data/storage/rnaibnexus-nuget-releases/Testing.TestNugetNamingConvention.App/1.0.0/Testing.TestNugetNamingConvention.App-1.0.0.nupkg
/srv/nexus/nexus-data/storage/rnaibnexus-nuget-releases/.nexus/attributes/Barclays.TestNugetNamingConvention.App/2.0.3/Testing.TestNugetNamingConvention.App-2.0.3.nupkg
/srv/nexus/nexus-data/storage/rnaibnexus-nuget-releases/.nexus/attributes/Testing.TestNugetNamingConvention.App/2.0.0/Testing.TestNugetNamingConvention.App-2.0.0.nupkg
/srv/nexus/nexus-data/storage/rnaibnexus-nuget-releases/.nexus/attributes/Barclays.TestNugetNamingConvention.App/1.2.0/Barclays.TestNugetNamingConvention.App-1.2.0.nupkg
/srv/nexus/nexus-data/storage/rnaibnexus-nuget-releases/.nexus/attributes/Testing.TestNugetNamingConvention.App/1.0.2/Testing.TestNugetNamingConvention.App-1.0.2.nupkg
/srv/nexus/nexus-data/storage/nish-testing/.nexus/attributes/.nexus/trash/Akka/1.1.1/Akka-1.1.1.nupkg
/srv/nexus/nexus-data/storage/nish-testing/.nexus/attributes/Akka/1.1.1/Akka-1.1.1.nupkg
/srv/nexus/nexus-data/storage/nish-testing/Akka/1.1.1/Akka-1.1.1.nupkg
我的問題是這樣的,我想顯示磁盤空間的ammount的,我可以在實際搬遷之前保存, 即可以說,上述* .nupkg文件是舊的,需要被刪除,因此用戶應該有一個統計數據爲多少空間將被實際保存
我需要的輸出是這樣的
xxx MB /nish-nuget-test
yyy GB /rnaibnexus-nuget-releases
zzz KB /nish-testing
我只需要一個級別深度@/srv/nexus/nexus-data/storage
,以及文件和文件夾的所有款項應遞歸加起來
我能得到的最接近的是這
find /srv/nexus/nexus-data/storage/ -name '*nupkg' -mtime +175 -type f -print0 | xargs --null -I '{}' du -sh '{}' | sort -h
然而,這只是列舉出來的單個文件,我試圖添加--max-depth = 1,但無法獲得正確的語法。
或者我用,find /srv/nexus/nexus-data/storage/ -name '*nupkg' -mtime +175 -type f -exec du -ch {} + | grep total$
但這只是列舉出整個文件列表的總和
任何建議請
解析的輸出'LS -l' [是不是好的做法](http://mywiki.wooledge.org/ParsingLs)(請參見「獲取元數據上的文件「爲你的直接用例)。如果使用GNU'find',特別是'-printf'可以和一個格式字符串直接打印文件大小一起使用。 –
'找... -printf「%s的\ t%H \ 0'',例如,會以字節爲單位打印尺寸對每個匹配的文件,選項卡,然後將目錄名,然後一個NUL。這使您可以明確地讀取包含換行符的目錄名稱。 –
可我們已經顯示在KB,GB,MB – Shir