GNU/Linux >> Znalost Linux >  >> Linux

Jak zjistit, zda jsou ve složce soubory, a podle toho ukončit (v KSH)

Chcete-li navázat na komentář Stéphana Chazelase k odpovědi Kusalanandy:

$ ksh
$ echo ${.sh.version}
Version AJM 93u+ 2012-08-01
$ ls
TABLE1.csv  TABLE2.csv

Použijte pole k uložení souborů. Začněte výrazem glob, který odpovídá některým souborům:

$ typeset -a files
$ files=( ~(N)*.csv )
$ echo "${#files[@]}"
2
$ typeset -p files
typeset -a files=(TABLE1.csv TABLE2.csv)

Nyní „holý“ globus, který se neshoduje, aby se ukázalo, že neodpovídající globus je nahrazen vzorem glob jako řetězec:

$ files=( *.txt )
$ echo "${#files[@]}"
1
$ typeset -p files
typeset -a files=('*.txt')

Nyní s předponou "null glob"

$ files=( ~(N)*.txt )
$ echo "${#files[@]}"
0
$ typeset -p files
(empty output)
$

Viz část Generování názvu souboru na vaší manuálové stránce ksh.

Chcete-li konkrétně odpovědět na vaši otázku:

typeset -a contents=( ~(N)"$gp_path"/ALLSTUFF*.zip )
if [[ ${#contents[@]} -eq 0 ]]; then
    print 'EMPTY'
    exit 0
else
    print 'NOT EMPTY'
fi

Měli byste se zbavit zvyku používat názvy proměnných ALLCAPS.

Viz také:https://mywiki.wooledge.org/ParsingLs


Chybovou zprávu můžete nechat zmizet pomocí 2>/dev/null uvnitř ls .

Poté můžete zkontrolovat, zda $CONTENTS je prázdný s -z

CONTENTS=$(ls -d -- "${gp_path}ALLSTUFF"*.zip 2>/dev/null)
if [ -z "$CONTENTS" ]; then
    print 'EMPTY'
    exit 0
else
    print 'NOT EMPTY'
fi

Chcete-li zjistit, zda se vzor názvu souboru rozšiřuje na cokoli, můžete použít

set -- "$gp_path"ALLSTUFF*.zip

if [ -e "$1" ]; then
    echo matched something
else
    echo did not match anything
    exit 1
fi

set příkaz nastaví poziční parametry na názvy souborů odpovídající vzoru, a pokud existuje první odpovídající název souboru, pak se s něčím shodoval. Vzor zůstane nerozbalený, pokud se s ničím neshodoval.

To by bylo použitelné v ksh , bash a jakékoli další sh -jako skořápka.


Linux
  1. Jak zjistit nejlepší adresáře a soubory (místo na disku) v Linuxu

  2. Jak najít soubory s oprávněními SUID a SGID v Linuxu

  3. Jak pomocí WC a potrubí zjistit, kolik souborů a adresářů je v určitém adresáři?

  1. Jak změnit oprávnění pro složku a její podsložky/soubory v jednom kroku?

  2. Jak chmodovat a chown skryté soubory v Linuxu?

  3. Jak najdu soubory a součet jejich velikostí?

  1. Jak najít konfigurační soubory MySQL, PHP a Apache

  2. Jak zjistit počet souborů v adresáři a podadresářích

  3. Klient Maestral Dropbox, zjistěte, jak jej nainstalovat a používat