我有一個包含多個文件夾的文件夾,在這些文件夾中還有更多的文件夾等等。 這棵樹的某處有文件(文本文件)。其中一個文件包含「找我」。我需要找到該文件的路徑。在bash和python中(每種語言都有一個代碼)。在bash中獲取目錄
當然,我不希望你解決這對我來說挑戰,所以我有一些問題(所有的問題是關於兩種語言):
- 我怎麼去了所有的文件和在某個目錄中的目錄?
- 如果我得到一個文件/目錄路徑,我該如何判斷這個路徑是用於文件還是用於目錄?
- (僅適用於bash)如何讀取文件內容並檢查它是否包含「找我」?
我有一個包含多個文件夾的文件夾,在這些文件夾中還有更多的文件夾等等。 這棵樹的某處有文件(文本文件)。其中一個文件包含「找我」。我需要找到該文件的路徑。在bash和python中(每種語言都有一個代碼)。在bash中獲取目錄
當然,我不希望你解決這對我來說挑戰,所以我有一些問題(所有的問題是關於兩種語言):
我覺得這個功能將解決您的Python問題1和2。 (我不知道bash。)它會單獨給你所有目錄和文件的完整列表,以及兩者結合的完整路徑。你可以試用它並根據你的喜好進行修改。然後,您需要閱讀所有找到的文件並尋找「找到我」。
import os
def find_paths(path):
dir_names = []
file_names = []
path_names = []
for dirname, dirnames, filenames in os.walk(path):
for filename in filenames:
# Combine dirname and filename into absolute path:
filepath = os.path.join(dirname, filename)
# Add info to lists:
dir_names.append(dirname)
file_names.append(filename)
path_names.append(filepath)
return dir_names, file_names, path_names
print find_paths(".") # Finds all dirs, files and paths in current folder.
'dir_names'列表將包含** lot **的重複項...... – 2014-10-03 14:46:49
這就是@ PM2Ring。就像這樣,因爲當我最初做這個功能時我只想要完整的路徑。要刪除重複,你可以看看這個問題:[「在Python中從列表中獲取唯一值」](http://stackoverflow.com/questions/12897374/get-unique-values-from-a-list-in-蟒蛇)。我不知道這是否是最優雅的解決方案,但是我可以發現它應該適用於所有操作系統。 – PaulMag 2014-10-04 22:20:33
好的。我想這可能是方便有這3個同步列表。但是這似乎浪費了空間,因爲您可以在需要時使用'os.path.split()'構建'path_names'並提取(路徑,基本名稱)。 – 2014-10-05 01:56:46
隨意嘗試的grep:
grep -r "find me" .
或
grep -r "find me" /path/to/your/folder
請在bash中瞭解grep命令。它可以解決您的問題,如果您不知道如何檢查文件或目錄,還需要了解bash的基本知識。 – RBH 2014-10-03 12:26:29
1)「find --help」 2)是 3)「cat/path/to/file」 – soerium 2014-10-03 12:28:41
Python:1&2)'os.walk' or'os.listdir' 3)''找到我「在開放(fname).read()' – matsjoyce 2014-10-03 12:31:45