GNU/Linux >> Belajar Linux >  >> Linux

Cara mengetahui apakah ada file di folder dan keluar sesuai (di KSH)

Untuk menindaklanjuti komentar Stéphane Chazelas atas jawaban Kusalananda:

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

Gunakan array untuk menyimpan file. Mulai dengan ekspresi glob yang cocok dengan beberapa file:

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

Sekarang glob "telanjang" yang tidak cocok untuk menunjukkan bahwa glob yang tidak cocok diganti dengan pola glob sebagai string:

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

Sekarang dengan awalan "null glob"

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

Lihat bagian Pembuatan Nama File di halaman manual ksh Anda.

Untuk membalas pertanyaan Anda secara spesifik:

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

Anda harus keluar dari kebiasaan menggunakan nama variabel ALLCAPS.

Lihat juga:https://mywiki.wooledge.org/ParsingLs


Anda dapat menghilangkan pesan kesalahan dengan 2>/dev/null di dalam ls .

Anda kemudian dapat memeriksa untuk melihat apakah $CONTENTS kosong dengan -z

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

Untuk mendeteksi apakah pola nama file diperluas menjadi apa pun, Anda dapat menggunakan

set -- "$gp_path"ALLSTUFF*.zip

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

set perintah mengatur parameter posisi ke nama file yang cocok dengan pola, dan jika ada nama file yang cocok pertama, maka itu cocok dengan sesuatu. Pola tetap tidak diperluas jika tidak cocok dengan apa pun.

Ini akan dapat digunakan di ksh , bash dan sh lainnya -seperti cangkang.


Linux
  1. Bagaimana Menggunakan Wc Dan Piping Untuk Menemukan Berapa Banyak File Dan Direktori Di Direktori Tertentu?

  2. Bagaimana Cara Mencari File Berdasarkan Ukuran Dan Ekstensi?

  3. Bagaimana cara mengubah izin untuk folder dan subfolder/file dalam satu langkah?

  1. Bagaimana cara mendeteksi dan mengetahui suatu program mengalami kebuntuan?

  2. Bagaimana cara chmod dan chown file tersembunyi di Linux?

  3. Bagaimana cara menemukan file dan menjumlahkan ukurannya?

  1. Cara Mengetahui Direktori dan File Teratas (Ruang Disk) di Linux

  2. Cara Menemukan File Konfigurasi MySQL, PHP dan Apache

  3. Cara Menemukan File Dengan Izin SUID dan SGID di Linux