Programuotojo Remigijaus Jarmalavičiaus tinklaraštis

Informacinės technologijos, programavimo įrankiai, atviro kodo projektai, knygos ir kiti programuotojo straipsniai.

BASH: Tuščių aplankų šalinimas

Tikriausiai kiekvieno žmogaus kompiuteryje, o ypatingai programuotojo, yra krūvos tuščių aplankų. Po vieną tokius aplankus trinti yra gan nuobodus ir laiko reikalaujantis darbas. Tad šiame straipsnyje apie tai, kai rasti tokius katalogus ir kaip juos pašalinti find komandos pagalba.

Komanda find turi be galo daug galimybių, todėl jeigu daug dirbate su failais, derėtų išmokti ja naudotis. O naudotis tikrai paprasta, užtektų atsiminti kaip rašomi keli šios komandos parametrai. Pavyzdžiui norėdami surasti failą ar aplanką su žodžiu „kiemas“ rašysime tokią komandą:

find -name 'kiemas.txt'

Tokia komanda tik ras tokius failus, kurie yra šiame arba šio katalogo viduje ir tikslus failo pavadinimas yra „kiemas.txt“. Tačiau jeigu nežinome tikslaus failo vardo ir ar failas parašytas didžiosiomis/mažosiomis raidėmis, panaudosime paieškos simbolius ir -iname argumentą:

find -iname '*kiemas*'

Tokia komanda galėtų rasti failus bei aplankus:

kiemas.txt
Kiemas.doc
mano/kiemas/aprašymas.txt

Kadangi nenurodėme, jog ieškome failo, ši komanda rado ir katalogus tokiu pavadinimu. Ko konkrečiai ieškome nurodome -type parametre. Pavyzdžiui:

find -type d -iname 'kiemas'      # bus ieškoma katalogų
find -type f -iname 'kiemas.txt'  # bus ieškoma failų

Randame ir pašaliname tuščius aplankus/failus

Ši komanda yra tokia galinga, kad ji gali ne tik rasti, bet ir atlikti nurodytus veiksmus su surastais duomenimis. Tačiau šiame straipsnyje tik apie tuščių failų trynimą. Sudėtingesni veiksmai kitame straipsnyje.

Surasti tuščius aplankus arba failus padės -empty parametras:

find -type f -empty   # suras failus kurie neturi turinio
find -type d -empty   # suras katalogus kurie neturi failų

O pašalinti tokius aplankus ar failus leis -delete parametras. Būkite atsargūs ką šalinate, todėl visada patikrinkite komandos išvestį be -delete parametro, prieš tai darydami:

find -type d -empty -delete

Pastaroji komanda pašalins visus tuščius aplankus (kurie neturi savyje jokių failų). O:

find -type f -empty -delete

Pašalins tuščius failus (kurie savyje neturi jokio turinio). Ši komanda kiek pavojingesnė, kadangi ypatingai programuojant net tušti failai dažnai yra dėl ko nors reikalingi (pvz.: gitignore failai).