Saya memiliki sebuah file yang bernama diff.txt. Ingin memeriksa apakah itu adalah kosong. Melakukan sesuatu seperti ini, tapi tidak't mendapatkan itu bekerja.
if [ -s diff.txt ]
then
touch empty.txt
rm full.txt
else
touch full.txt
rm emtpy.txt
fi
Ejaan adalah menjengkelkan, ya't mereka? Periksa ejaan kosong
, tapi kemudian juga mencoba ini:
#!/bin/bash -e
if [ -s diff.txt ]
then
rm -f empty.txt
touch full.txt
else
rm -f full.txt
touch empty.txt
fi
Aku seperti shell scripting banyak, tetapi salah satu kelemahan dari ini adalah bahwa shell tidak dapat membantu anda ketika anda misspell, sedangkan compiler seperti C++ compiler dapat membantu anda.
Pemberitahuan kebetulan bahwa saya telah bertukar peran empty.txt
dan full.txt
, seperti @Matthias menunjukkan.
[ -s file.name ] || echo "file is empty"
[[ -s file ]] --> Cek apakah file yang memiliki ukuran lebih besar dari 0
if [[ -s diff.txt ]]; then echo "file has something"; else echo "file is empty"; fi
Jika diperlukan, pemeriksaan ini semua *.txt file dalam direktori saat ini; dan laporan semua file kosong:
for file in *.txt; do if [[ ! -s $file ]]; then echo $file; fi; done
Sementara yang lain jawaban yang benar, menggunakan " s"
pilihan ini juga akan menunjukkan file kosong bahkan jika file tidak ada.
Dengan menambahkan tambahan ini check " f"
untuk melihat apakah file yang ada dulu, kami menjamin hasil yang benar.
if [ -f diff.txt ]
then
if [ -s diff.txt ]
then
rm -f empty.txt
touch full.txt
else
rm -f full.txt
touch empty.txt
fi
else
echo "File diff.txt does not exist"
fi
@geedoubleya jawabannya adalah favorit saya.
Namun, saya lebih suka ini
if [[ -f diff.txt && -s diff.txt ]]
then
rm -f empty.txt
touch full.txt
elif [[ -f diff.txt && ! -s diff.txt ]]
then
rm -f full.txt
touch empty.txt
else
echo "File diff.txt does not exist"
fi
Banyak jawaban yang benar, tetapi saya merasa seperti mereka bisa lebih lengkap / sederhana dll. misalnya :
Contoh 1 : Dasar jika pernyataan
# BASH4+ example on Linux :
typeset read_file="/tmp/some-file.txt"
if [ ! -s "${read_file}" ] || [ ! -f "${read_file}" ] ;then
echo "Error: file (${read_file}) not found.. "
exit 7
fi
jika $read_file kosong atau tidak ada menghentikan acara dengan pintu keluar. Lebih dari sekali saya telah salah membaca atas jawabannya di sini berarti sebaliknya.
Contoh 2 : Sebagai fungsi
# -- Check if file is missing /or empty --
# Globals: None
# Arguments: file name
# Returns: Bool
# --
is_file_empty_or_missing() {
[[ ! -f "${1}" || ! -s "${1}" ]] && return 0 || return 1
}
Saya datang ke sini mencari cara untuk menghapus kosong __init__.py
file seperti yang tersirat dalam Python 3.3+ dan akhirnya menggunakan:
find -depth '(' -type f -name __init__.py ')' -print0 |
while IFS= read -d '' -r file; do if [[ ! -s $file ]]; then rm $file; fi; done
Juga (setidaknya di zsh) menggunakan $path sebagai variabel juga istirahat anda $PATH env dan begitu itu'll istirahat anda buka shell. Toh, pikir saya'd share!