我需要編寫一個bash腳本,列出以某個字母開頭的目錄(及其子目錄)中的所有文件,比如A/a。如果文件的內容應該以該字母而不是其名稱開頭,那麼該怎麼辦?列表文件的內容以Bash中的一個字母開頭
1
A
回答
1
grep -rn "^[A|a]" * | awk -F: '$2==1{print $1}'
grep的遞歸(-r
),用於在當前文件夾的圖案^[A|a]
。如果找到(不必在第一行),grep輸出將看起來像filname:linenumber:match
。使用awk
和:
作爲字段分隔符,對於其中的linenumber爲1
(在第一行中找到的匹配,即文件開頭)的情況,打印1st
字段即文件名。由於我們給出-n
選項,因此grep輸出將包含linenumber。
2
只需擊和globstar
選項(shopt -s globstar
)使**/*
:
for file in **/*; do [[ $(< "$file") == [Aa]* ]] && echo "$file"; done
這遍歷所有文件(和目錄)遞歸和檢查,如果其內容與A
或a
開始。如果是這樣,文件名將被打印。
它實際上也嘗試將目錄與[Aa]*
進行比較,但僅在$file
是目錄時才返回$(< "$file")
的非成功退出狀態。
或者,不Bashsims,使用find
:
find . -type f -exec sh -c '[ "$(head -c 1 "$1" | tr A a)" = a ]' _ {} \; -print
此過濾器文件(-type f
),然後產生一個子shell,其中測試"$(head -c 1 "$1" | tr A a)" = a
運行(獲取文件的第一個字符,轉勢大寫A
到a
,與a
比較,如果退出狀態成功,則打印文件名。
相關問題
- 1. 篩選以JavaScript中的一個字母開頭的列表元素
- 2. BASH - 快速確定文件中以大寫字母開頭的行數
- 3. 查找以列表中的給定字母開頭的單詞
- 4. mysql - 我如何獲得一個以一個字母開頭的列表並繼續接下來的字母?
- 5. 過濾器數據不以oracle中的字母列表開頭
- 6. 複製以某個字母開頭的所有文件
- 7. 查找列表中的某個字母開頭的詞數
- 8. bash:獲取以給定字符串開頭的命令列表
- 9. 如何使textField的第一個字符只以字母開頭?
- 10. 以字母開頭的粗體字
- 11. 搜索以字母開頭
- 12. 將另一個內容列表作爲wordpress的內容文件
- 13. 如何刪除以特定字母開頭的文件
- 14. Bash腳本:如何查找以一個字符開頭的行?
- 15. Bash:以「 - 」開頭的回顯字符串
- 16. 選擇一個數字列表以及以sql開頭的所有nuber列表
- 17. 把一個文本文件的內容到一個列表,
- 18. 以特定字符開頭的列表文件
- 19. 以字母開頭的返回值
- 20. 打印行如果行以字母表中的任何字母開頭
- 21. Bash:根據名字的第一個字母移動文件
- 22. 打印列表時,Python會以字母開頭?
- 23. egrep - 文本中以't'開頭並以'e'結尾的三個字母單詞
- 24. 多個jar文件的列表內容
- 25. RegEx以字母或數字開頭0
- 26. 列表中的每一個字母? LISP
- 27. Bash字符串以數字開頭的零個數
- 28. 檢查一個字符串是否以列表中的任何字符開頭
- 29. MySQL選擇名字以姓氏開頭的某個字母
- 30. 以大寫字母開頭的單詞的正則表達式
你的問題?你已經在這裏待了近3年,你應該知道我們不做你的工作爲你 ;) –