How to delete empty files/spreadsheets in a directory ?

9 visualizzazioni (ultimi 30 giorni)
Hello,
I have a directory with milions of .xlsx files. The point is that I want to remove empty files. Is there a way to do it using a command in matlab? Instead of the fact that these files are empty, they have 10kb.
Could you please help me?
  4 Commenti
Walter Roberson
Walter Roberson il 4 Mar 2021
To clarify:
Files that have only one line of data should be deleted, but files that have more than one line of data should not be deleted?
Ivan Mich
Ivan Mich il 4 Mar 2021
Modificato: Ivan Mich il 4 Mar 2021
I should delete files that have no line of data (see the format of the EMPTY.xlsx' file I uploaded) and I should keep files that have one or more than one line of data.
Did you understand?

Accedi per commentare.

Risposta accettata

Ivan Mich
Ivan Mich il 5 Mar 2021
Modificato: Ivan Mich il 7 Mar 2021
After your suggestions I wrote finally this script that works
clc
clear
% C = readcell('EMPTY.xlsx');
% isempty(C)
emptyfiles=dir('*xlsx')
for k=1:numel(emptyfiles)
emptynew=emptyfiles(k).name
[STATUS, SHEETS] = xlsfinfo(emptynew);
% if length(SHEETS) > 1; next; end %assume multiple sheet files are special
C = readcell(emptynew, 'sheet', SHEETS{1});
if isempty(C);
delete(emptynew);
end
end
  5 Commenti
Ivan Mich
Ivan Mich il 7 Mar 2021
Ok, one last question. Can I delete files that have only 1 row and one column empty (I mean 1x1 double) and keep all the other files?
Walter Roberson
Walter Roberson il 7 Mar 2021
if size(C,1) == 1 && size(C,2) == 1
delete(emptynew);
end

Accedi per commentare.

Più risposte (1)

Fangjun Jiang
Fangjun Jiang il 4 Mar 2021
  1. run [STATUS,SHEETS] = xlsfinfo(FILENAME). Most likely, it will tell you there is only one sheet
  2. run [NUM,TXT,RAW]=xlsread(FILENAME). Most likely, isempty(NUM) and isempty(TXT) are both true
  3. delete(FILENAME)
  2 Commenti
Walter Roberson
Walter Roberson il 4 Mar 2021
Alternative to the second step:
C = readcell(FILENAME);
isempty(C)
For example,
[STATUS, SHEETS] = xlsfinfo(FILENAME);
if length(SHEETS) > 1; next; end %assume multiple sheet files are special
C = readcell(FILENAME, 'sheet', SHEETS{1});
if isempty(C); delete(FILENAME); end
Ivan Mich
Ivan Mich il 5 Mar 2021
I run this code after your suggestions:
[STATUS, SHEETS] = xlsfinfo('*.xlsx');
if length(SHEETS) > 1; next; end %assume multiple sheet files are special
C = readcell('*.xlsx', 'sheet', SHEETS{1});
if isempty(C); delete('*.xlsx'); end
BUT NO USE!
Do you know why?

Accedi per commentare.

Categorie

Scopri di più su Entering Commands in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by