Portál AbcLinuxu, 5. května 2025 21:04
Zdravím, poradil by nějaký profík jak v nějakém adresáři rekurzivně odstranit všechny soubory a adresáře podle těchto kritérií? Platný název obsahuje pouze a výhradně - čísla 0,1,2,3,4,5,6,7,8,9 - nesmí začínat číslem 0 ani jiným znakem - nesmí končit jiným znakem než číslem - nesmí obsahovat příponu - nesmí být skrytý, symlink atd.. Prostě potřebuji smazat všechny položky pokud nemají platná název který se skládá pouze s čísel a nezačíná 0 Programové prostředí Python >3.x Děkuji za případnou pomoc.
takle by jako moch bejt ten domácák :O :P :D :D ;D ;D
#!/usr/bin/env python3 import os # naimportujem si os import re # taky modul re na dělání regexpů/regularnich výrazů import shutil # modul shutil na jednudchý mazání složek který nejsou prázný (pozor nebezpečný!!!!! :O :O nesmaž si disk nebo tak něco!! :O :O) # zkompilujem si regulární výraz do kterýho musej sedět ty naše soubory hledaný regulularni_vyraz = re.compile("(^[1-9][0-9]*)") # nějaká cesta prohledávaná cesta = "/home/pman/domacak" # naskenujem si všecky položšky v cestě a všema projdem for loopem polozky = os.scandir(cesta) for polozka in polozky: # jestli jako neni symlink a současně nám sedí ten regulerní výraz (když regexp něco našel tak nevrátil prázdnou hodnotu resp. None) if not polozka.is_symlink() and regulularni_vyraz.match(polozka.name) is not None: print(f"nasla se polozka: {polozka.name}") if polozka.is_dir(): print("polozka je slozska takze budem mazat slozsku") shutil.rmtree(polozka.path) elif polozka.is_file(): print("polozka je soubor takze budem mazat soubor") os.remove(polozka.path) print("hotovo!!!!!!!!!!!!!!!!!!!!!!!")
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.