File-Management
刪除除一個文件外的所有文件/目錄
我有一個包含大量文件的目錄。我想刪除除 file.txt 之外的所有文件。我該怎麼做呢?
有太多文件無法單獨刪除不需要的文件,並且它們的名稱過於多樣化,無法使用 * 將它們全部刪除,除了這個文件。
有人建議使用
rm !(file.txt)
但它不起作用。它返回:
Badly placed ()'s
我的作業系統是 Scientific Linux 6。
有任何想法嗎?
POSIXly:
find . ! -name 'file.txt' -type f -exec rm -f {} +
將刪除所有正常文件(遞歸地,包括隱藏文件),除了
file.txt
. 要刪除目錄,請更改-type f
為-type d
並將-r
選項添加到rm
.在
bash
,要使用rm -- !(file.txt)
,您必須啟用 extglob:$ shopt -s extglob $ rm -- !(file.txt)
(或打電話
bash -O extglob
)請注意,
extglob
僅適用於bash
和 Korn shell 系列。並且使用rm -- !(file.txt)
會導致Argument list too long
錯誤。在
zsh
中,您可以使用啟用了extendedglob^
來否定模式:$ setopt extendedglob $ rm -- ^file.txt
或使用與選項相同的
ksh
語法bash
並ksh_glob
啟用no_bare_glob_qual
。