資料來源
http://paul.pixnet.net/blog/post/26610488
===========================================================
[ 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
===========================================================
沒有留言:
張貼留言