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')