Command-Line
刪除具有相同前綴的多個文件(參數列表太長)
我試過使用這裡給出的答案,但它似乎沒有用。以下是我嘗試在我的 CentOS 系統上刪除此目錄中帶有 index.php 前綴的所有文件的命令。前兩個似乎已經執行但什麼也沒做?
$ find . -prune -name 'index.php.*' -exec rm {} + $ find . -prune -name 'index*' -exec rm {} + $ rm index.php* -bash: /usr/bin/rm: Argument list too long
假設我們有這個測試文件的測試數據集:
$ tree . ├── index.php ├── index.php.bar ├── index.php.foo ├── keppme.php └── level1 ├── index.php ├── index.php.l1 ├── keepme.php └── level2 ├── index.php ├── index.php.foo └── keepme.php
刪除所有以 開頭的文件
index.php
:$ find . -type f -name 'index.php*' -delete
然後測試文件如下所示:
$ tree . ├── keppme.php └── level1 ├── keepme.php └── level2 └── keepme.php
刪除那些在
.php
副檔名後添加的內容(如lindex.php.foo
)但保留index.php
:$ find . -type f -name 'index.php.*' -delete
然後測試數據顯示:
$ tree . ├── index.php ├── keppme.php └── level1 ├── index.php ├── keepme.php └── level2 ├── index.php └── keepme.php
相反,使用
-delete
選項,您還可以選擇xargs
並行刪除文件。有時為了刪除大文件集合,這可以加快整個過程,但並非總是如此。在每個核心/cpu 上執行命令,每次呼叫
rm
最大100
文件數:rm
$ find . -type f -name 'index.php.*' -print0 | xargs -r0 -P $(nproc) -n 100 rm