Linux
循環遍歷所有文件目錄並抓取長度大於 5 的文件
初學者 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 '??????*'
- 匹配六個或更多字元的名稱綜上所述,首先我們只匹配目錄。下一部分匹配至少有六個字元的項目(目錄),如果匹配失敗,則列印出項目(目錄)名稱。
嘗試這個:
for i in * do if [ ${#i} -gt 5 ]; then echo $i: ${#i}; fi; done