
我有文件檔案名稱_1,檔案名稱_2……檔案名稱_100000其中檔案名稱依序編號。我怎麼才能刪除索引大於的文件,比如說100?
答案1
如果檔案名稱依序編號,只需執行以下命令:
rm fileName_{100..100000}
答案2
你也可以嘗試這個指令,
for i in $(seq 100 100000); do rm fileName_$i; done
如果檔案名稱中包含連續數字,它將刪除所有檔案(範圍從 100 到 100000)。
答案3
一般來說,您有幾種方法可以實現這一目標:
rm fileName_{100..100000}
將被 shell 擴展為大約 100,000 個檔案名稱。如果基本名稱是長路徑且數字足夠高,則實際上可能會超出使用此方法的命令列的最大長度。
for
循環
for i in $(seq 100 100000); do rm fileName_$i; done
不會遇到這個問題,但這是一種相對較慢的刪除檔案的方法,因為 shell 必須執行變數替換並啟動 rm 大約 100,000 次。
如果某些文件filename_101
遺失,上述兩種方法都可能會導致警告。
通常,基於的解決方案find
會更好,因為它們僅適用於實際存在的文件(在發現期間)。但是,存在一些細微的差異:
find . -name 'fileName_[100-100000]' -exec rm {} \;
仍將啟動該rm
程式約 100,000 次,同時將最終替換\;
為+
將嘗試最小化子進程的數量。這兩種方法可能會(或多或少)比 using 慢,-delete
後者根本不使用外部命令,而是呼叫系統呼叫。
然而,總是首先檢查模式是否確實與您要定位的文件相符:
stefan@tuxedo ~ % mkdir askubuntu
stefan@tuxedo ~ % touch askubuntu/filename_{1..1000}
stefan@tuxedo ~ % find askubuntu -name 'filename_[100-1000]'
askubuntu/filename_1
因此,在這種情況下,您可以刪除想要保留的文件,並保留應該刪除的文件。