5 cara untuk memeriksa apakah suatu file kosong di bash
- 2461
- 312
- Luis Baumbach
Di Linux, file kosong adalah file yang memiliki ukuran nol byte. Ini berarti bahwa file tidak berisi data apa pun, dan tidak memiliki konten saat dibuka di editor teks. File kosong dapat dibuat menggunakan perintah sentuh: 'Sentuh myfile.txt'
Ini akan membuat file kosong yang disebut myfile.txt di direktori saat ini. Anda juga dapat membuat file kosong menggunakan perintah Echo dengan> operator: 'Echo> myfile.txt'
Ini akan menimpa konten yang ada dalam file dengan string kosong, secara efektif membuat file kosong.
Metode untuk memeriksa apakah file kosong di bash
Ada beberapa cara berbeda untuk memeriksa apakah suatu file kosong di bash, tergantung pada kebutuhan spesifik Anda dan alat yang tersedia di sistem Anda. Di artikel ini, kita akan melihat lima pendekatan berbeda untuk memeriksa apakah sebuah file kosong di bash.
- Menggunakan
'tes'
perintah atau'['
Itu
#!/usr/bin/env bash fileName = myfile.txt # periksa apakah file kosong jika [ ! -s "$ fileName"]; Lalu file "file kosong" else echo "tidak kosong" fi'tes'
perintah (yang merupakan alias untuk'[
'Perintah) adalah utilitas yang sederhana dan tersedia secara luas untuk melakukan berbagai tes pada file dan objek lainnya di Bash. Untuk memeriksa apakah file kosong menggunakan'['
, Anda dapat menggunakan'-S'
Opsi, yang memeriksa ukuran file:12345678910 #!/usr/bin/env bash fileName = myfile.txt # periksa apakah file itu kosong ! -s "$ fileName"]; Lalu file "file kosong" else echo "tidak kosong" fi Perhatikan bahwa
#!/usr/bin/env bash fileName = myfile.txt [-z "$ (cat $ filename)"] kemudian echo "file kosong" else echo "file tidak kosong" fi'-S'
Opsi menganggap file menjadi kosong jika ukurannya nol, tetapi tidak memeriksa keberadaan karakter tersembunyi atau whitespace. Jika Anda ingin memeriksa file yang benar -benar kosong (i.e., satu yang hanya berisi spasi putih atau tidak memiliki garis sama sekali), Anda dapat menggunakan'-z'
Opsi, yang memeriksa apakah string kosong:123456789 #!/usr/bin/env bash fileName = myfile.txt [-z "$ (cat $ filename)"] kemudian echo "file kosong" else echo "file tidak kosong" fi Ini akan membaca isi file dan meneruskannya ke perintah uji sebagai string. Jika string kosong, file dianggap kosong.
Anda juga dapat memeriksa file yang ada sebelum menguji file kosong. Skrip di bawah ini akan memeriksa apakah file ada dan apakah file kosong atau tidak.
#!/usr/bin/env bash fileName = myfile.txt if [-f "$ filename"]; lalu jika [-s "$ fileName"]; lalu echo "file $ fileName ada dan tidak mengosongkan" lain echo "file $ fileName ada tetapi kosong file "fi else echo" $ filename tidak ada "fi12345678910111213 #!/usr/bin/env bash fileName = myfile.txt if [-f "$ filename"]; lalu jika [-s "$ fileName"]; lalu echo "file $ fileName ada dan tidak mengosongkan" lain echo "file $ fileName ada tetapi kosong file "fielse echo" $ filename tidak ada "fi Sesuai contoh di atas, jika file saya.txt tidak ada, skrip akan menampilkan output sebagai "file tidak ada" dan jika file ada dan merupakan file kosong maka itu akan menunjukkan output sebagai "file ada tetapi kosong", jika tidak jika ada file memiliki beberapa konten di dalamnya akan akan Tampilkan output sebagai "file ada dan tidak kosong".
- Menggunakan perintah WC
Itu 'toilet' Perintah (Word Count) adalah utilitas lain yang dapat digunakan untuk memeriksa apakah file kosong di bash. Untuk memeriksa jumlah baris dalam file, Anda dapat menggunakan
#!/usr/bin/env bash fileName = myfile.txt # periksa apakah file memiliki baris jika [$ (wc -l < "$FILENAME") -eq 0 ]; then echo "File $FILENAME is empty" else echo "File $FILENAME is not empty" fi'-l'
pilihan:12345678910 #!/usr/bin/env bash fileName = myfile.txt # periksa apakah file memiliki linef [$ (wc -l < "$FILENAME") -eq 0 ]; then echo "File $FILENAME is empty"else echo "File $FILENAME is not empty"fi Ini akan meneruskan konten file ke 'toilet' perintah sebagai input standar, dan
'-l'
Opsi akan menghitung jumlah baris. Jika jumlah baris nol, file dianggap kosong. - Menggunakan perintah grep
Itu 'grep' Perintah adalah alat yang ampuh untuk mencari dan memproses file teks. Untuk memeriksa apakah suatu file kosong menggunakan GREP, Anda dapat menggunakan
#!/usr/bin/env bash fileName = myfile.txt jika grep -q . "$ FileName"; Kemudian echo "File tidak kosong" else echo "file kosong" fi'-Q'
Opsi, yang menyebabkan Grep berjalan dengan tenang dan mengembalikan kode keluar:123456789 #!/usr/bin/env bash fileName = myfile.txt jika grep -q . "$ FileName"; Kemudian echo "File tidak kosong" else echo "file kosong" fi Ini akan mencari file untuk karakter apa pun (. adalah ekspresi reguler yang cocok dengan karakter apa pun) dan mengembalikan kode keluar nol jika kecocokan ditemukan, atau kode keluar nol nol jika file kosong.
Menggunakan Perintah Temukan
Itu 'menemukan' Perintah adalah utilitas untuk mencari dan memproses file dan direktori. Untuk memeriksa apakah file kosong menggunakan Find, Anda dapat menggunakan opsi -empty, yang cocok dengan file yang kosong:
#!/usr/bin/env bash fileName = myfile.txt jika temukan . -ketik f -empty -name "$ fileName"; Lalu file "file kosong" else echo "tidak kosong" fi12345678 | #!/usr/bin/env bash fileName = myfile.txtify temukan . -ketik f -empty -name "$ fileName"; Lalu file "file kosong" else echo "tidak kosong" fi |
Ini akan mencari direktori saat ini (.) untuk file (-Type f) yang kosong (-kosong) dan nikmati namanya "file saya.txt" (-Name “myfile.txt"). Jika kecocokan ditemukan, perintah temukan akan mengembalikan kode keluar nol, menunjukkan bahwa file tersebut kosong. Jika tidak ada kecocokan yang ditemukan, perintah temukan akan mengembalikan kode keluar non-nol, menunjukkan bahwa file tidak kosong.
Menggunakan perintah stat
Itu 'Stat' Perintah adalah utilitas untuk menampilkan informasi tentang file dan sistem file. Untuk memeriksa apakah suatu file kosong menggunakan stat, Anda dapat menggunakan opsi -c untuk menampilkan ukuran file dalam byte:
#!/usr/bin/env bash fileName = myfile.txt if [$ (stat -c %s "$ filename") -eq 0]; Lalu file "file kosong" else echo "tidak kosong" fi12345678 | #!/usr/bin/env bash fileName = myfile.txtif [$ (stat -c %s "$ filename") -eq 0]; Lalu file "file kosong" else echo "tidak kosong" fi |
Ini akan melewati ukuran file ke '[' perintah, yang akan membandingkannya dengan nol. Jika ukurannya nol, file tersebut dianggap kosong. Jika ukurannya bukan nol, file tersebut dianggap tidak kosong.
Saya harap contoh -contoh ini telah memberi Anda pemahaman yang baik tentang berbagai cara untuk memeriksa apakah suatu file kosong di bash. Seperti yang Anda lihat, ada banyak pendekatan berbeda untuk dipilih, dan yang terbaik akan bergantung pada kebutuhan spesifik Anda dan alat yang tersedia di sistem Anda.