Portál AbcLinuxu, 5. května 2025 21:04

Dotaz: Jak odstranit položky v zadaném adresáři?

31.1.2022 00:20 pman
Jak odstranit položky v zadaném adresáři?
Přečteno: 436×
Odpovědět | Admin
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.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

31.1.2022 00:32 X
Rozbalit Rozbalit vše Re: Jak odstranit položky v zadaném adresáři?
Odpovědět | | Sbalit | Link | Blokovat | Admin
man find (regex)
Gréta avatar 1.2.2022 21:13 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Jak odstranit položky v zadaném adresáři?
Odpovědět | | Sbalit | Link | Blokovat | Admin

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!!!!!!!!!!!!!!!!!!!!!!!")
Zelená energetická soustava založená na obnovitelnejch zdrojích energie versus realnej svět 🤡🇪🇸

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.