Linux下使用rm刪除文件,并排除指定文件
rm是我們在Linux下刪除文件經(jīng)常用到的命令,但是有時候我們目錄下有很多個文件想要刪除,偏偏卻要保留其中1個或幾個文件,那怎么辦呢?很多新手朋友可能會采取一個一個文件刪除的方法來操作,但是如果文件很多呢?刪到啥時候啊~~
今天我們就來教大家使用rm命令刪除文件的時候如何排除指定的文件(不刪除指定文件)。首先我們來看一下平時我們是怎么使用rm命令的。
1、刪除單個文件
rm 1.txt
2、強制刪除文件,無需確認
rm -rf 1.txt
3、刪除文件夾
rm -rf mydir
4、刪除目錄下全部文件,包括文件夾
rm -rf *
5、刪除全部文件,但保留1.txt
rm -rf !(1.txt)
正常情況下是全部文件被刪除了,只留下了1.txt,但是有時候我們的系統(tǒng)沒配置好,可能會報錯,例如下面這種:
-
root@abc:/home/# rm -rf !(1.txt)
-
-bash: !: event not found
上面這種情況是因為我們的系統(tǒng)沒有開啟通配符功能,我們執(zhí)行下面的命令開啟通配符功能先:
shopt -s extglob
查看通配符功能是否開啟,on表示已經(jīng)開啟
shopt -s
然后我們再次執(zhí)行前面的命令就可以看到文件已經(jīng)全部刪除了,只保留了1.txt
rm -rf !(1.txt)
6、刪除全部文件,保留1.txt和2.txt
rm -rf !(1.txt|2.txt)
上面我們說的都是直接用rm + !(嘆號)來排除文件的,下面我們搞個高深一點的,用find + grep + xargs三個命令一起用
7、刪除全部文件,保留1.txt
find * | grep -v 1.txt | xargs rm
這里我們要特別注意grep的-v參數(shù),-v參數(shù)表示反選,比如我們上面指定了-v 1.txt,即排除掉1.txt,選中其他全部文件。所以這樣執(zhí)行之后1.txt就被排除了
8、刪除全部文件,保留1.txt和2.txt
find * | grep -v '\(1.txt\|2.txt\)' | xargs rm
這里要特別留意,括號()跟括號內(nèi)的豎線|需要添加\進行轉(zhuǎn)義,否則會報錯
今天講的就這些,都是非常實用的技巧,大家趕緊動手試試吧

浙公網(wǎng)安備 33010602011771號