Saya punya file bernama diff.txt. Ingin memeriksa apakah kosong. Melakukan sesuatu seperti ini tetapi tidak bisa membuatnya bekerja.
if [ -s diff.txt ]
then
touch empty.txt
rm full.txt
else
touch full.txt
rm emtpy.txt
fi
diff
panggilan sebenarnya , cukup periksa nilai kembali:if diff foo.txt bar.txt; then echo 'No difference'
if [ ! -s diff.txt ]; then echo "IS EMPTY";else echo "HAS SOMETHING";fi
$ cat diff.txt | hexdump -C
Jawaban:
Salah eja menjengkelkan, bukan? Periksa ejaan Anda
empty
, tetapi kemudian coba juga ini:Saya suka banyak skrip shell, tetapi satu kelemahannya adalah bahwa shell tidak dapat membantu Anda ketika Anda salah mengeja, sedangkan kompiler seperti kompiler C ++ Anda dapat membantu Anda.
Perhatikan secara kebetulan bahwa saya telah bertukar peran
empty.txt
danfull.txt
, seperti yang disarankan @Matthias.sumber
empty=empty.txt; full=full.txt; diff=diff.txt; if [ -s ${diff?} ]; then r=${empty?} t=${full?}; else r=${full?} t=${empty?}; fi; rm ${r?}; touch ${t?}
set -u
sumber
[[ -s file.name ]] || { [[ -f file.name ]] && echo 'empty' || echo 'does not exist'; }
[[-s file]] -> Memeriksa apakah file memiliki ukuran lebih besar dari 0
Jika perlu, ini memeriksa semua file * .txt di direktori saat ini; dan melaporkan semua file kosong:
sumber
$(ls *.txt
, dan sebenarnya seharusnya tidak. Beberapa orang memiliki pengaturan default untukls
yang menggunakan format panjang (seperti saya) dan shell sudah akan berkembang*.txt
sendiri. Lakukan sajafor file in *.txt
sebagai gantinya.find
seperti ini:for file in $(find . -name '*.txt'); do if [[ ! -s $file ]]; then echo $file; fi; done
for file in $(ls *.txt); do
. Silakan gunakanfor file in *.txt; do
sebagai gantinya; baca halaman Bash Pitfalls ini ; dan tolong hentikan penyebaran antipatterns seperti ini.Sementara jawaban lain sudah benar, menggunakan
"-s"
opsi ini juga akan menunjukkan file kosong bahkan jika file tersebut tidak ada.Dengan menambahkan cek tambahan ini
"-f"
untuk melihat apakah file tersebut ada terlebih dahulu, kami memastikan hasilnya benar.sumber
@geedoubleya jawabannya adalah favorit saya.
Namun, saya lebih suka ini
sumber
Untuk memeriksa apakah file kosong atau hanya memiliki spasi putih , Anda dapat menggunakan grep:
sumber
-s
tidak menjawab pertanyaan. Itu mencari file yang memang ada dan memiliki ukuran lebih dari 0 byte.Banyak jawaban yang benar tetapi saya merasa mereka bisa lebih lengkap / simplistic dll. Misalnya:
Contoh 1: Dasar jika pernyataan
jika $ read_file kosong atau tidak hentikan acara dengan keluar. Lebih dari sekali saya salah membaca jawaban teratas di sini yang berarti sebaliknya.
Contoh 2: Sebagai fungsi
sumber
sumber
Saya datang ke sini mencari cara menghapus
__init__.py
file kosong karena mereka tersirat dalam Python 3.3+ dan akhirnya menggunakan:Juga (setidaknya dalam zsh) menggunakan $ path sebagai variabel juga istirahat $ PATH Anda env dan itu akan merusak shell terbuka Anda. Ngomong-ngomong, kupikir aku akan berbagi!
sumber
Cara termudah untuk memeriksa file kosong atau tidak:
Anda juga dapat menulisnya dalam satu baris:
sumber