最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux實(shí)現(xiàn)徹底清理空文件夾的方法詳解

 更新時間:2022年10月24日 14:09:43   作者:農(nóng)民工老王  
這篇文章主要介紹了Linux實(shí)現(xiàn)徹底刪除指定路徑下的所有空文件夾。這里的空文件夾的認(rèn)定標(biāo)準(zhǔn)是:如果某個文件夾的子文件夾全是空文件夾,也認(rèn)為該文件夾是空文件夾,需要的可以參考一下

最近工作中遇到一個需求——刪除指定路徑下的所有空文件夾。這里的空文件夾的認(rèn)定標(biāo)準(zhǔn)是:如果某個文件夾的子文件夾全是空文件夾,也認(rèn)為該文件夾是空文件夾。

代碼

以下是我實(shí)現(xiàn)的shell腳本,自測沒有發(fā)現(xiàn)異常。

#!/bin/bash
delete_empty_dirs_once(){
  local dirPath=$1

  if [ ! -d "${dirPath}" ]; then
      echo  "文件夾不存在:${dirPath}"
      return 0
  fi

  local lsStrInDEDO=$(ls -a "${dirPath}")
  local arrayInDEDO=(${lsStrInDEDO})

  if [  ${#arrayInDEDO[@]} -le 2 ]; then
      rm -rf "${dirPath}"
      echo "刪除空文件夾:${dirPath}"
      echo "${dirPath}" >>empty_dirs.txt
      emptyDirNumForOnce=$(($emptyDirNumForOnce+1))
      emptyDirNumForAll=$(($emptyDirNumForAll+1))
      return 1
  else
      local flag=0
      for item in "${arrayInDEDO[@]}";do
        local itemPath="${dirPath}/${item}"
        if [ "$item" != "."  ] && [ "$item" != ".." ] && [ -d "${itemPath}"  ]; then
            delete_empty_dirs_once "${dirPath}/${item}"
            if [ $? -eq 1  ]; then
                flag=1
            fi
        fi
      done
      return $flag
  fi
}

delete_empty_dirs(){
  local topDirPath=$1
  if [ ! -d "${topDirPath}" ]; then
      return 1
  fi
  emptyDirNumForAll=0
  deleteTime=0
  local  flag=1
  while [ $flag -eq  1 ]; do
    emptyDirNumForOnce=0
    deleteTime=$(($deleteTime+1))
    delete_empty_dirs_once "${topDirPath}"
    flag=$?
    echo "第${deleteTime}輪清理,刪除了${emptyDirNumForOnce}個空文件夾。"
  done
  echo "進(jìn)行了${deleteTime}輪清理,總共刪除了${emptyDirNumForAll}個空文件夾。"

}

delete_empty_dirs "$1"

使用方法

在需要Linux中,將代碼通過vim或者cat寫入到一個shell腳本文件,如clean.sh,并通過chmod +x賦予該文件可執(zhí)行權(quán)限,然后通過./<腳本文件名> <待清理的路徑>執(zhí)行清理任務(wù) 。例如./clean.sh /root/geoscene/geoscene ,注意路徑的最后不要帶/。

測試效果

本文的腳本會統(tǒng)計最后刪除了多少個空文件夾,并將全部的刪除記錄打印到控制臺,同時將刪除文件清單輸出到腳本所在文件夾下的output.txt文件中。

總結(jié)

本腳本通過循環(huán)和遞歸將整個任務(wù)分解成一輪一輪的清理任務(wù),直到再也找不到空文件夾為止。實(shí)現(xiàn)方式比較暴力,沒有考慮時間復(fù)雜度。如果您有更優(yōu)的解決方案,歡迎通過留言評論進(jìn)行交流。

補(bǔ)充

當(dāng)然Linux還可以實(shí)現(xiàn)自下而上的刪除空文件夾,下面是實(shí)現(xiàn)方法

需求

在工作中遇到一個需求:

  • 刪除一個指定的文件夾,如果刪除后,其上一層文件夾也是空文件夾,則也刪除其上一層文件夾;
  • 如果刪除其上一層文件夾后,上一層文件夾的再上一層文件夾也是空,也刪除再上一層文件夾;
  • 依次類推,直到刪除到一個指定的文件層級;
  • shell腳本實(shí)現(xiàn);

簡單地說就是要自下而上地刪除Linux的空文件夾。

實(shí)現(xiàn)

以下是完成的shell方法,,經(jīng)過測試,能正常使用。

代碼

delete_empty_dir(){
  fromDirInDED="$1"
  toDirInDED=$2
  if [ "$fromDirInDED" = "" ] || [ "$toDirInDED" = "" ] || [ ${#fromDirInDED} -lt ${#toDirInDED} ] ; then
      echo "delete_empty_dir方法參數(shù)錯誤。"
      return 1
  fi

  if [ ! -d "$fromDirInDED" ]; then
      echo "文件夾不存在:${fromDirInDED} 。"
      return 1
  fi

  if [ "$fromDirInDED" = "$toDirInDED" ]; then
      echo "抵達(dá)最終文件層級。"
      return 0
  fi

  lsStrInDED=`ls -a ${fromDirInDED}`
  arrayInDED=(${lsStrInDED})
  if [  ${#arrayInDED[@]} -le 2 ]; then
      rm -rf "${fromDirInDED}"
      echo "刪除空文件夾:${fromDirInDED}"
      delete_empty_dir `dirname ${fromDirInDED}` "${toDirInDED}"
  else
     echo "此文件夾非空:${fromDirInDED} 。"
     echo "完成空文件夾清理。"
  fi
}

使用說明

該方法需要兩個參數(shù),第一個參數(shù)為需要刪除的最下一層文件夾的絕對路徑,該文件夾無論是不是為空,都會被刪除,第二個參數(shù)為停止刪除的文件夾的絕對路徑。

如:需要刪除/root/myApps/laoWang/CSDN/blogs/test/shell目錄,并判定其上層文件夾是否為空文件夾,如果為空也將刪除,直到/root/myApps/laoWang才停止刪除操作。

那么完成上述需求的執(zhí)行代碼為:delete_empty_dir /root/myApps/laoWang/CSDN/blogs/test/shell /root/myApps/laoWang

到此這篇關(guān)于Linux實(shí)現(xiàn)徹底清理空文件夾的方法詳解的文章就介紹到這了,更多相關(guān)Linux清理空文件夾內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Shell腳本實(shí)現(xiàn)的一個簡易Web服務(wù)器例子分享

    Shell腳本實(shí)現(xiàn)的一個簡易Web服務(wù)器例子分享

    這篇文章主要介紹了Shell腳本實(shí)現(xiàn)的一個簡易Web服務(wù)器例子分享,本文實(shí)現(xiàn)的Web服務(wù)器非常簡單實(shí)用,可以在你不想安裝nginx、apache等大型WEB服務(wù)器時使用,需要的朋友可以參考下
    2014-12-12
  • Linux下使用nextcloud搭建個人網(wǎng)盤代碼實(shí)例

    Linux下使用nextcloud搭建個人網(wǎng)盤代碼實(shí)例

    這篇文章主要介紹了Linux下使用nextcloud搭建個人網(wǎng)盤代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,,需要的朋友可以參考下
    2019-06-06
  • Shell腳本一次讀取文件中一行的2種寫法

    Shell腳本一次讀取文件中一行的2種寫法

    這篇文章主要介紹了Shell腳本一次讀取文件中一行的2種寫法,本文還同時講解了Shell讀取文本文件的2種方法,需要的朋友可以參考下
    2015-04-04
  • Linux中的內(nèi)核鏈表實(shí)例詳解

    Linux中的內(nèi)核鏈表實(shí)例詳解

    這篇文章主要介紹了Linux中的內(nèi)核鏈表實(shí)例詳解的相關(guān)資料,鏈表中一般都要進(jìn)行初始化、插入、刪除、顯示、釋放鏈表,尋找節(jié)點(diǎn)這幾個操作,需要的朋友可以參考下
    2017-08-08
  • shell腳本中取消重定向的方法實(shí)例

    shell腳本中取消重定向的方法實(shí)例

    這篇文章主要介紹了shell腳本中取消重定向的方法實(shí)例,本文直接給出代碼實(shí)例,需要的朋友可以參考下
    2015-03-03
  • 獲取shell腳本自身所在目錄的Shell腳本分享

    獲取shell腳本自身所在目錄的Shell腳本分享

    這篇文章主要介紹了獲取shell腳本自身所在目錄的Shell腳本分享,本文給出的腳本可以獲取軟鏈接所在的目錄,需要的朋友可以參考下
    2015-01-01
  • shell中的流編輯器awk工作原理

    shell中的流編輯器awk工作原理

    awk是一種處理文本文件的語言,是一個強(qiáng)大的文本分析工具, 用于在linux/unix下對文本和數(shù)據(jù)進(jìn)行處理 。這篇文章主要介紹了shell中的流編輯器awk命令及工作原理,需要的朋友可以參考下
    2022-01-01
  • shell腳本命令行參數(shù)簡介

    shell腳本命令行參數(shù)簡介

    本文詳細(xì)介紹了shell腳本命令行參數(shù)的用法,在shell腳本中要注意命令行參數(shù)怎么使用,這也是shell編程中的重點(diǎn)內(nèi)容,有需要的朋友參考下。
    2014-04-04
  • Linux文件壓縮tar的常見用法

    Linux文件壓縮tar的常見用法

    tar?是一個非常強(qiáng)大的工具,不僅可以用來解壓縮文件,還可以用來創(chuàng)建歸檔文件(壓縮),以下是幾種常見的?tar?壓縮命令和選項(xiàng),適用于不同的壓縮格式,需要的朋友可以參考下
    2025-03-03
  • 如何短時間內(nèi)學(xué)好一門語言 shell腳本語言為例

    如何短時間內(nèi)學(xué)好一門語言 shell腳本語言為例

    這篇文章主要以shell腳本語言為例,為大家介紹了如何短時間內(nèi)學(xué)好一門語言,感興趣的小伙伴們可以參考一下
    2016-09-09

最新評論

武胜县| 高平市| 应用必备| 高要市| 寻甸| 烟台市| 迁安市| 盐城市| 博野县| 永新县| 铁力市| 唐河县| 开远市| 洮南市| 永春县| 齐齐哈尔市| 明水县| 铁力市| 行唐县| 得荣县| 云霄县| 阜康市| 富平县| 师宗县| 临湘市| 唐河县| 西安市| 神木县| 盈江县| 霍山县| 顺昌县| 松潘县| 涿州市| 上思县| 沧源| 长泰县| 潮州市| 福鼎市| 双柏县| 乡宁县| 五河县|