5 cara untuk memeriksa sama ada fail kosong di bash
- 1529
- 399
- Clay Weber
Di Linux, fail kosong adalah fail yang mempunyai saiz bait sifar. Ini bermakna bahawa fail tidak mengandungi sebarang data, dan ia tidak mempunyai kandungan apabila dibuka dalam editor teks. Fail kosong boleh dibuat menggunakan arahan sentuh: 'Sentuh MyFile.txt '
Ini akan membuat fail kosong yang disebut myfile.TXT dalam direktori semasa. Anda juga boleh membuat fail kosong menggunakan perintah echo dengan pengendali>: 'echo> myfile.txt '
Ini akan menimpa kandungan sedia ada dalam fail dengan rentetan kosong, dengan berkesan membuat fail kosong.
Kaedah untuk memeriksa sama ada fail kosong di bash
Terdapat beberapa cara yang berbeza untuk memeriksa sama ada fail kosong di bash, bergantung pada keperluan khusus anda dan alat yang tersedia di sistem anda. Dalam artikel ini, kita akan melihat lima pendekatan yang berbeza untuk memeriksa jika fail kosong di Bash.
- Menggunakan
'Ujian'
perintah atau'['
The
#!/usr/bin/env bash filename = myFile.TXT # periksa sama ada fail kosong jika [ ! -s "$ filename"]; kemudian echo "fail kosong" lain echo "fail tidak kosong" fi'Ujian'
perintah (yang merupakan alias untuk'[
'Perintah) adalah utiliti yang mudah dan luas untuk melaksanakan pelbagai ujian pada fail dan objek lain di Bash. Untuk memeriksa sama ada fail kosong menggunakan'['
, anda boleh menggunakan'-s'
pilihan, yang memeriksa saiz fail:12345678910 #!/usr/bin/env bash filename = myFile.TXT # periksa sama ada failnya kosong [ ! -s "$ filename"]; kemudian echo "fail kosong" lain echo "fail tidak kosong" fi Perhatikan bahawa
#!/usr/bin/env bash filename = myFile.txt [-z "$ (cat $ filename)"] kemudian echo "fail kosong" else echo "fail tidak kosong" fi'-s'
Pilihan menganggap fail kosong jika saiznya sifar, tetapi tidak memeriksa kehadiran aksara tersembunyi atau ruang putih. Sekiranya anda ingin menyemak fail kosong sepenuhnya (i.e., satu yang mengandungi ruang kosong atau tidak mempunyai garis sama sekali), anda boleh menggunakan'-z'
pilihan, yang memeriksa jika rentetan kosong:123456789 #!/usr/bin/env bash filename = myFile.txt [-z "$ (cat $ filename)"] kemudian echo "fail kosong" else echo "fail tidak kosong" fi Ini akan membaca kandungan fail dan menyerahkannya ke arahan ujian sebagai rentetan. Sekiranya rentetan kosong, fail dianggap kosong.
Anda juga boleh menyemak fail yang ada sebelum ujian untuk fail kosong. Skrip di bawah akan memeriksa sama ada fail itu wujud dan jika fail kosong atau tidak.
#!/usr/bin/env bash filename = myFile.txt if [-f "$ fileName"]; maka jika [-s "$ fileName"]; kemudian echo "fail $ filename wujud dan tidak kosong" else echo "fail $ filename wujud tetapi kosong tetapi kosong tetapi kosong tetapi kosong tetapi kosong tetapi kosong tetapi kosong tetapi kosong tetapi kosong Fail "fi else echo" $ filename tidak wujud "fi12345678910111213 #!/usr/bin/env bash filename = myFile.txt if [-f "$ fileName"]; maka jika [-s "$ fileName"]; kemudian echo "fail $ filename wujud dan tidak kosong" else echo "fail $ filename wujud tetapi kosong tetapi kosong tetapi kosong tetapi kosong tetapi kosong tetapi kosong tetapi kosong tetapi kosong tetapi kosong Fail "Fielse echo" $ filename tidak wujud "fi Seperti contoh di atas, jika myfile.txt tidak wujud, skrip akan menunjukkan output sebagai "fail tidak wujud" dan jika fail wujud dan fail kosong maka ia akan menunjukkan output sebagai "fail wujud tetapi kosong", jika ada fail mempunyai beberapa kandungan di dalamnya akan tunjukkan output sebagai "fail wujud dan tidak kosong".
- Menggunakan arahan WC
The 'WC' (kiraan perkataan) perintah adalah utiliti lain yang boleh digunakan untuk memeriksa sama ada fail kosong di bash. Untuk memeriksa bilangan baris dalam fail, anda boleh menggunakan
#!/usr/bin/env bash filename = myFile.TXT # semak jika fail mempunyai sebarang 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 # semak jika fail mempunyai linesif [$ (wc -l < "$FILENAME") -eq 0 ]; then echo "File $FILENAME is empty"else echo "File $FILENAME is not empty"fi Ini akan lulus kandungan fail ke 'WC' perintah sebagai input standard, dan
'-l'
pilihan akan mengira bilangan baris. Sekiranya bilangan baris adalah sifar, fail dianggap kosong. - Menggunakan arahan grep
The 'Grep' Perintah adalah alat yang berkuasa untuk mencari dan memproses fail teks. Untuk memeriksa sama ada fail kosong menggunakan grep, anda boleh menggunakan
#!/usr/bin/env bash filename = myFile.txt jika grep -q . "$ Filename"; kemudian echo "fail tidak kosong" lain echo "fail kosong" fi'-q'
pilihan, yang menyebabkan Grep berjalan secara senyap -senyap dan mengembalikan kod keluar:123456789 #!/usr/bin/env bash filename = myFile.txt jika grep -q . "$ Filename"; kemudian echo "fail tidak kosong" lain echo "fail kosong" fi Ini akan mencari fail untuk mana -mana watak (. adalah ungkapan biasa yang sepadan dengan mana-mana watak) dan mengembalikan kod keluar sifar jika perlawanan dijumpai, atau kod keluar bukan sifar jika fail kosong.
Menggunakan arahan cari
The 'cari' Perintah adalah utiliti untuk mencari dan memproses fail dan direktori. Untuk memeriksa sama ada fail kosong menggunakan Cari, anda boleh menggunakan pilihan -empty, yang sepadan dengan fail yang kosong:
#!/usr/bin/env bash filename = myFile.txt jika mencari . -taip f -empty -name "$ filename"; kemudian echo "fail kosong" lain echo "fail tidak kosong" fi12345678 | #!/usr/bin/env bash filename = myFile.txtif cari . -taip f -empty -name "$ filename"; kemudian echo "fail kosong" lain echo "fail tidak kosong" fi |
Ini akan mencari direktori semasa (.) untuk fail (-Type f) yang kosong (-Empty) dan mempunyai nama "Myfile.txt ” (-Name "MyFile.txt ”). Sekiranya perlawanan dijumpai, perintah mencari akan mengembalikan kod keluar sifar, menunjukkan bahawa fail itu kosong. Sekiranya tiada perlawanan dijumpai, perintah mencari akan mengembalikan kod keluar bukan sifar, menunjukkan bahawa fail itu tidak kosong.
Menggunakan arahan stat
The 'stat' Perintah adalah utiliti untuk memaparkan maklumat mengenai fail dan sistem fail. Untuk memeriksa sama ada fail kosong menggunakan stat, anda boleh menggunakan pilihan -c untuk memaparkan saiz fail dalam bait:
#!/usr/bin/env bash filename = myFile.txt jika [$ (stat -c %s "$ fileName") -eq 0]; kemudian echo "fail kosong" lain echo "fail tidak kosong" fi12345678 | #!/usr/bin/env bash filename = myFile.txtif [$ (stat -c %s "$ filename") -eq 0]; kemudian echo "fail kosong" lain echo "fail tidak kosong" fi |
Ini akan lulus saiz fail ke '[' perintah, yang akan membandingkannya dengan sifar. Sekiranya saiznya sifar, fail dianggap kosong. Sekiranya saiznya tidak sifar, fail dianggap tidak kosong.
Saya harap contoh -contoh ini memberi anda pemahaman yang baik tentang cara yang berbeza untuk memeriksa sama ada fail kosong di bash. Seperti yang dapat anda lihat, terdapat banyak pendekatan yang berbeza untuk dipilih, dan yang terbaik bergantung pada keperluan khusus anda dan alat yang tersedia di sistem anda.