国产宅男网站在线|亚洲A级性爱免费视频|亚洲中精品级在线|午夜福利AA毛

  • <dd id="gf5jf"><th id="gf5jf"></th></dd>

    <cite id="gf5jf"><label id="gf5jf"></label></cite>
  • <div id="gf5jf"><listing id="gf5jf"></listing></div>
    學習啦 > 學習電腦 > 操作系統(tǒng) > Linux教程 > Linux下刪除某文件外的所有文件方法

    Linux下刪除某文件外的所有文件方法

    時間: 春健736 分享

    Linux下刪除某文件外的所有文件方法

      不知你是否想過在Linux命令行上,如何實現(xiàn)刪除除了某個文件之外的所有文件?下面學習啦小編就大家介紹下刪除指定文件以外的文件命令。

      Linux下刪除某文件外的所有文件方法

      一、Linux下刪除文件和文件夾常用命令如下:

      刪除文件: rm file

      刪除文件夾: rm -rf dir

      需要注意的是, rmdir 只能夠刪除 空文件夾。

      二、刪除制定文件(夾)之外的所有文件呢?

      1、方法1,比較麻煩的做法是:

      復制需要保留的文件到其他文件夾,然后將該目錄刪除, 然后將需要保留的移動 回來。

      mv keep 。。/ #保留文件(夾) keep

      rm -rf * #刪除當前文件夾里的所有文件

      mv 。。/keep 。/ #將原來的東西移動回來

      2、方法2,需要在當前文件夾中進行:

      rm -rf !(keep) #刪除keep文件之外的所有文件

      rm -rf !(keep1 | keep2) #刪除keep1和keep2文件之外的所有文件

      3、方法3,當前文件夾中結合使用grep和xargs來處理文件名:

      ls | grep -v keep | xargs rm #刪除keep文件之外的所有文件

      說明: ls先得到當前的所有文件和文件夾的名字, grep -v keep,進行grep正則匹配查找keep,-v參數(shù)決定了結果為匹配之外的結果,也就是的到了keep之外的所有文件名,然后 xargs用于從 標準輸入獲得參數(shù) 并且傳遞給后面的命令,這里使用的命令是 rm,然后由rm刪除前面選擇的文件。

      好處:使用了grep來正則表達式來匹配文件名字,可以一次保留多個文件,從而進行更加準確的處理。

      4、方法4,使用find命令代替ls,改進方法3從而能夠處理制定文件夾的文件:

      find 。/test/ | grep -v keep | xargs rm #刪除當前test文件夾中keep文件之外的所有文件

      說明,用grep而不用find -name選取名字,因為find選取名字時比較麻煩,對正則表達式支持不夠,無法排除指定文件名。

      5、方法5,直接使用find命令刪除其他文件:

      find 。/ -name ‘[^k][^e][^e][^p]*’ -exec rm -rf {} \; #刪除keep以外的其他文件。

      find 。/ -name ‘[^k][^e][^e][^p]*’ | xargs rm -rf #刪除keep以外的其他文件。推薦!

      說明:上面第二行的代碼效率高些,原因在于刪除多個文件時 -exec會啟動多個進程來處理,而xargs會啟動一個rm進程來處理。

      其中rm -f !(a) 最為方便。如果保留a和b,可以運行rm -f !(a|b)來實現(xiàn)。

      不過一般bash中運行后會提示

      “-bash: !: event not found ” 可以通過運行shopt -s extgolb來解決。如下:

      [root@localhost /]# mkdir abc

      [root@localhost /]# cd abc

      [root@localhost abc]# touch a b c

      [root@localhost abc]# ls

      a b c

      [root@localhost abc]# rm -f !(a)

      -bash: !: event not found

      [root@localhost abc]# shopt -s extglob

      [root@localhost abc]# rm -f !(a)

      [root@localhost abc]# ls

      a

      [root@localhost abc]# touch b c d

      [root@localhost abc]# rm -f !(a|b)

      [root@localhost abc]# ls

      a b

      另外也可以使用下面的方法:

      [root@localhost abc]# ls

      a b c

      [root@localhost abc]# ls |grep -v a |xargs rm -f

      [root@localhost abc]# ls

      a

      上面就是Linux刪除文件的方法介紹了,當你要刪除指定文件之外的所有文件的話,上面有5種方法可以實現(xiàn),選一個自己習慣的方法試試看看吧。

    648689