一、選定需要保留的文件名列表
在刪除Linux中除特定文件外的所有文件之前,我們需要先明確哪些文件不能被刪除。在這個過程中,我們需要創建一個文本文件,包含需要保留的文件名列表,這將是我們將要使用的參數。
touch to_keep.txt
vi to_keep.txt
#將需要保留的文件名逐行輸入並保存
二、使用find命令
find命令可以在指定路徑下查找符合條件的文件,並且可以根據文件名、類型、大小、時間等多個參數進行精確搜索。
1. 僅顯示要刪除的文件
首先我們可以先使用find命令查找需要刪除的文件,確保我們要刪除的文件都存在於列表中。這個步驟主要是為了避免誤刪了需要保留的文件。
find /path/to/search -type f ! -name "$(xargs <to_keep.txt | sed 's/ /\\|/g')"
“!”代表排除,xargs會去除空格並用”|”連接每個文件名,sed則是將空格替換成”|”。這個命令將會列出需要刪除的文件。
2. 刪除查找到的文件
一旦您已經確定您要刪除的文件名列表,您可以使用刪除命令刪除上一步列出的文件:
find /path/to/search -type f ! -name "$(xargs <to_keep.txt | sed 's/ /\\|/g')" -delete
這個命令會刪除上一步列出的所有文件。
三、使用rsync命令
rsync命令通常用於文件同步和備份,不過在這種情況下,我們也可以使用它來將需要保留的文件複製到一個新的目錄,然後將原始目錄刪除,並重新命名複製的目錄。以下是幾個步驟:
1. 複製需要保留的文件
rsync -av --progress --exclude-from=to_keep.txt /path/to/search /path/to/new_directory
這個命令會複製目標文件夾中不在保留列表之內的所有文件到一個名為「new_directory」的新目錄,”-exclude-from”選項會排除所有保留文件。
2. 刪除原始目錄
rm -r /path/to/search
請謹慎執行此命令,以確保您已經在步驟一中成功地複製了所有需要保留的文件。
3. 重命名新目錄
mv /path/to/new_directory /path/to/search
這個命令將新目錄由「new_directory」改為原始目錄的名稱。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/228937.html