Skip to main content

Python 檢查 symbolic link 清單

BUBU 因為公司架設服務發現到服務有很多檔案目錄都是用 link 方式是建立,因此有找到 python 可以檢查那些資料有被 link 用到

程式解說


#!/usr/bin/python3

import os # 系統模組
from pathlib import Path # 路徑
import re  # 正規
import shutil  # 判斷目錄

# 要掃的路徑
path1 = ''

# 要排除的檔案
#includes = set([''])

# 要排除的目錄
exclude = set(['log'])

# 將 glob 模式轉換為正則表達式
#includes = r'|'.join([fnmatch.translate(x) for x in includes])

#print(str(obj))
for dirPath, dirNames, fileNames in os.walk(path1):
    # 排除不掃檔案
    #fileNames = [fi for fi in fileNames if not re.match(includes, fi)]
    # 排除不掃目錄
    dirNames[:] = [d1 for d1 in dirNames if d1 not in exclude]
    # 掃目前有那些是被 link 的
    for fdir in dirNames:
        fdir_path = Path(dirPath, fdir)
        # 判斷是否有被 link 
        if os.path.islink(fdir_path):
           # 有 link 會輸出路徑記錄
            with open('./1.txt', 'a') as b1:
                b1.write(str(fdir_path) + '\n')
        else:
           # 沒有 link 記錄
            with open('./2.txt', 'a') as b2:
                b2.write(str(fdir_path) + '\n')
    for ffile in fileNames:
        ffile_path = Path(dirPath, ffile)
        if os.path.islink(ffile_path):
            # 有 link 會輸出路徑記錄
            with open('./3.txt', 'a') as b1:
                b1.write(str(ffile_path) + '\n')
        else:
            with open('./4.txt', 'a') as b2:
                # 沒有 link 記錄
                b2.write(str(ffile_path) + '\n')

備註





參考相關網頁