Faylın bash boşluğunu yoxlamaq üçün necə?

Diff.txt adlı fayl var. Boş olub olmadığını yoxlamaq istəyirsiniz. Bənzər bir şey etdim amma işə getmədi.

 if [ -s diff.txt ] then touch empty.txt rm full.txt else touch full.txt rm emtpy.txt fi 
127
01 апр. Mich 01 Mart tarixinə təyin etdi 2012-04-01 16:41 '12 at 4:41 pm 2012-04-01 16:41
@ 7 cavab

Səhvlər cansıxıcıdır, yoxsa? empty imla yoxlayın, ancaq aşağıdakıları cəhd edin:

 #!/bin/bash -e if [ -s diff.txt ] then rm -f empty.txt touch full.txt else rm -f full.txt touch empty.txt fi 

Çuxur skriptlərindən istifadə etməyi çox sevirəm, amma bu çatışmamazlıqlardan biri, səhv olduğunuz zaman qorumanın sizə kömək edə bilməyəcəyi, C ++ tərtibçisi kimi bir kompilyator sizə kömək edə bilər.

full.txt tərəfindən təklif edilən boşluqların full.txt olduğunu qeyd edin və full.txt.

175
01 апр. cavab 01 mart apre . 2012-04-01 16:52 '12 at 4:52 pm 2012-04-01 16:52
 [ -s file.name ] || echo "file is empty" 
border=0
52
30 дек. cavab mickey ağ 30 dec verilir. 2014-12-30 21:03 '15 at 21:03 2014-12-30 21:03

[[-s file]] → Faylın ölçüsü 0'dan böyük olub olmadığını yoxlayır

 if [[ -s diff.txt ]]; then echo "file has something"; else echo "file is empty"; fi 

Lazım gələrsə, cari dizindəki bütün * .txt faylları yoxlanılır; və boş fayl haqqında hər şeyi bildirir:

 for file in *.txt; do if [[ ! -s $file ]]; then echo $file; fi; done 
31
09 мая '17 в 6:25 2017-05-09 06:25 Suriyaya 09 May '17 'də 6:25 2017-05-09 06:25 cavab verdi

Digər cavablar doğru olsa da, "-s" istifadə edərək, faylın mövcud olmadığı hallarda faylın boş olduğunu da göstərir.
Faylın əvvəlində olub olmadığını görmək üçün bu "-f" əlavə əlavə edin, nəticənin düzgün olduğunu təmin edirik.

 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 
4
05 окт. cavab verildi geedoubleya 05 oct . 2017-10-05 14:48 '17 at 2:48 pm 2017-10-05 14:48

@ ceuboubleya cavab mənim ən yaxşısıdır .

Buna baxmayaraq, bunu üstün tuturam

 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 
2
11 апр. Cavab smarber 11 apr verilir . 2018-04-11 13:52 '18 saat 13:52 'də 2018-04-11 13:52

Cavabların çoxu düzgündür, amma onlar daha tam / sadələşdirilmiş və s. Ola bilərlər, məsələn:

 # 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 

$ read_file boşsa və ya olmasa, çıxış ilə göstərməyin. Mən dəfələrlə yuxarı cavabları əksini göstərmək üçün yanlış oxudum.

1
29 апр. Mike Q tərəfindən verilmiş cavab 29 aprel 2018-04-29 21:27 '18 saat 21:27 'da 2018-04-29 21:27

Python 3-də örtülü olduğundan boş __init__.py faylları necə aradan qaldıracağını __init__.py . 3+ və nəticədə:

 find -depth '(' -type f -name __init__.py ')' -print0 | while IFS= read -d '' -r file; do if [[ ! -s $file ]]; then rm $file; fi; done 

Dəyişən kimi $ yolunu da istifadə etmək (ən azı zsh) də $ PATH mühitinizi pozur və bu səbəbdən açıq qabığınızı məhv edir. Hər halda, düşündüm ki, bölüşəcəyəm!

0
23 янв. SamMorrowDrums cavab 23 Yanvar 2019-01-23 19:17 '19 'da 7:17 ' de 2019-01-23 19:17 'de

tags ilə bağlı digər suallar və ya sual verməkdir