我需要遍歷一個目錄,以便從一個目錄開始,並深入到不同的子目錄中。不過,我也需要能夠訪問每個單獨的文件來修改文件。是否已有命令執行此操作,還是必須編寫腳本?有人可以提供一些代碼來幫助我完成這項任務嗎?謝謝。Unix:遍歷一個目錄
回答
find
命令只是它的工具。它的-exec標誌或-print0與xargs -0
的組合允許對每個文件做什麼的細粒度控制。
示例:在/ tmp和子目錄中的所有文件中,用條的全部foo替換。
find /tmp -type f -exec sed -i -e 's/foo/bar/' '{}' ';'
你能提供一個代碼示例嗎?謝謝! –
有關其他詳細信息,請參見[本頁](http://ss64.com/bash) –
@thiton使用'sed'您不會以交互方式訪問這些文件。我不認爲這是@EricAnderson正在尋找的東西。 – ztank1013
這可以很容易地通過混合find
,xargs
,sed
(或其他文件修改命令)來實現。
例如: $ find /path/to/base/dir -type f -name '*.properties' | xargs sed -ie '/^#/d'
這將過濾所有的文件與文件擴展名.properties
。 xargs
命令會將find
命令生成的file path
送入sed
命令。 sed
命令將刪除文件中的所有以#
開頭的行(由xargs
供稿)。
這種方式的命令組合非常靈活。
例如,find
命令具有不同的參數,因此您可以按用戶名,文件大小,文件路徑(例如:在/ test /子文件夾下),文件修改時間進行過濾。
靈活性的另一個方面是如何以及如何更改文件。例如,sed
命令允許您在應用替換時對文件進行更改(通過正則表達式指定)。同樣,您可以使用gzip
來壓縮文件。等等...
我假設SearchMe
是您需要完整遍歷的示例目錄名稱。
我也假設,因爲它沒有指定,你想修改的文件都是文本文件。它是否正確?
在這種情況下,我建議使用下面的命令:
find SearchMe -type f -exec vi {} \;
如果你不熟悉vi
編輯器,只需使用另一個(nano
,emacs
,kate
,kwrite
,gedit
等),它應該也能工作。
擊4+
shopt -s globstar
for file in **
do
if [ -f "$file" ];then
# do some processing to your file here
# where the find command can't do conveniently
fi
done
- 1. 遍歷目錄
- 2. 遍歷目錄
- 3. 遍歷兩個目錄
- 4. 遍歷目錄樹
- 5. R:遍歷目錄
- 6. Applescript遍歷目錄
- 7. 目錄遍歷c
- 8. 如何遍歷一個目錄,而不進入子目錄
- 9. 用php遍歷目錄?
- 10. Ruby中的目錄遍歷
- 11. 目錄遍歷問題c#
- 12. 使用Node.js遍歷目錄
- 13. 遍歷目錄路徑
- 14. 通過http遍歷目錄
- 15. 目錄遍歷bash shell
- 16. 遞歸目錄遍歷
- 17. Perl子目錄遍歷
- 18. perl的遍歷目錄
- 19. 目錄遍歷攻擊
- 20. 用Gulp遍歷目錄?
- 21. 遍歷目錄使用Java
- 22. 笨 - 目錄遍歷 - sanitize_filename()
- 23. 遍歷多個目錄在Groovy
- 24. 遍歷對兩個文件在目錄
- 25. 如何遍歷目錄和cd到每個目錄
- 26. 遍歷一個特定的記錄
- 27. 遍歷索引和前一個項目
- 28. 遍歷目錄中的文件並複製到另一個目錄
- 29. 遍歷目錄和輸出文件名到一個txt文件
- 30. 遍歷一個目錄,但從不同的文件開始?
什麼是遍歷的目的是什麼? – Orbling