[ Linux Note ]
如果目錄底下有特定資料需要保留,而其他資料要刪除的話,可
透過以下方式達成此需求。


原本的檔案結構:

  [root@mis FireTest]# tree /root/FireTest/

  /root/FireTest/
  |-- File-Test-001
  | |-- OK
  | `-- Test
  |-- File-Test-012
  | |-- OK
  | `-- Test
  |-- File-Test-123
  | |-- OK
  | `-- Test
  `-- File-Test-123-003
   |-- OK
   `-- Test

  12 directories, 0 files



想保留「File-Test-123*」的目錄,刪除其他目錄的話,使用
以下指令即可達成!


方法一,利用 Find + egrep -v (建議):

  rm -rf `find /root/FireTest/ | egrep -v '(File-Test-123*)'`


或者可以寫成這樣...

  rm -rf `find /root/FireTest/ | egrep -v '(File-Test-123|File-Test-123-003)'`


※ 切記! Find 目錄時,該目錄最後面一定要加上「/」,要不
 然可是會發生災難,Find 的搜尋條件,會將整個目錄刪除!

 假如不相信的話,可以勇敢的試試看。 ^0^/


方法二,利用 ls + egrep -v:

在 /root/FireTest 目錄下,執行該指令...

  rm -rf `ls | egrep -v 'File-Test-123*'`


或者可以寫成這樣...

  rm -rf `ls | egrep -v '(File-Test-123|File-Test-123-003)'`



若怕刪除錯誤,可以先用 ls 檢查 egrep 取得的資料為何?

  [root@mis FireTest]# ls /root/FireTest/ | egrep -v 'File-Test-123*'
  File-Test-001
  File-Test-012


※ egrep -v ‧ 這個參數是用來過濾特定名稱,進而取得過濾值以外的資料。


這方法有點遜,順手寫一下筆記避免日後忘記!

                          Paul

paul 發表在 痞客邦 PIXNET 留言(0) 人氣()