Linux

循環遍歷所有文件目錄並抓取長度大於 5 的文件

  • October 22, 2022

初學者 linux 使用者在這裡;我正在創建一個循環,它將遍歷所有目錄文件夾,並通過回顯它們的名稱並提取名稱的總長度並將其回顯到控制台中,然後將回顯儲存在 wc 中。

如何添加另一個條件,如果這個總長度小於 5 列印出來,否則通過?

我嘗試了以下方法:

for i in *                 
   do
       if [ -d "$i" ]
           then
          if (echo n "$i" | wc -m < 5)
               then
                   wc
              fi
       fi
   done

列印出以下內容:

zsh: no such file or directory: 5
zsh: no such file or directory: 5
zsh: no such file or directory: 5
zsh: no such file or directory: 5
...
...

如何在父目錄中獲取文件,以便我可以在給定條件的情況下訪問子目錄文件。

for i in *
   do
       if [ -d "$i" ]
            if (( $( echo n "$i" | wc -m ) == 76 ))
            then
            find $i
       fi 
   done

列印父目錄中的文件

如果要在所有目錄中搜尋名稱不超過五個字元的目錄,可以使用find命令來完成。不需要顯式循環:

find -type d \( -name '??????*' -o -print \)

解釋

  • -type d- 只考慮目錄項
  • \( ... \)- 將這些組合在一起
  • item1 -o item2- 如果item失敗則執行item2
  • -name '??????*'- 匹配六個或更多字元的名稱
  • -print- 列印目前項目名稱

綜上所述,首先我們只匹配目錄。下一部分匹配至少有六個字元的項目(目錄),如果匹配失敗,則列印出項目(目錄)名稱。

嘗試這個:

for i in *
 do
   if [ ${#i} -gt 5 ]; then
       echo $i: ${#i};
   fi;
 done

引用自:https://unix.stackexchange.com/questions/722062