スポンサーリンク

find -type f

find -type fでサブディレクトリ以下のファイルを再帰的に出力できますね。
参考:[シェル]ファイル検索をfindとtreeで

例えば、下記のディレクトリ構成があったとします。

 $ tree dir1/
dir1/
├── dir2
│   ├── file2.txt
│   ├── file3.txt
│   └── file4.txt
├── dir3
│   └── file5.txt
└── file1.txt

2 directories, 5 files

find -type fでdir1以下を再帰的にファイル出力します。

 $ find ./dir1 -type f
./dir1/dir2/file2.txt
./dir1/dir2/file3.txt
./dir1/dir2/file4.txt
./dir1/dir3/file5.txt
./dir1/file1.txt

スポンサーリンク

Pythonのos.walk()

Pythonのos.walk()で、findコマンドのようにサブディレクトリ以下を再帰的にファイル出力してみます。

下記がサンプルコードになります。
os.walk()の戻り値はタプルになります。
for文の使い方を少し工夫して、findコマンドのようにprint出力しています。

 $ cat sample.py 
#!/usr/bin/env python3
# coding: UTF-8

import os

targetDirPath = './dir1'

for dirPath, dirList, fileList in os.walk(targetDirPath):
	for fileName in fileList:
		print(dirPath + "/" + fileName)

下記が実行結果になります。
 $ ./sample.py 
./dir1/file1.txt
./dir1/dir2/file2.txt
./dir1/dir2/file3.txt
./dir1/dir2/file4.txt
./dir1/dir3/file5.txt

スポンサーリンク