How to delete empty files/spreadsheets in a directory ?

2 vues (au cours des 30 derniers jours)
Ivan Mich
Ivan Mich le 4 Mar 2021
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 commentaires
Walter Roberson
Walter Roberson le 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 le 4 Mar 2021
Modifié(e) : Ivan Mich le 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?

Connectez-vous pour commenter.

Réponse acceptée

Ivan Mich
Ivan Mich le 5 Mar 2021
Modifié(e) : Ivan Mich le 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 commentaires
Ivan Mich
Ivan Mich le 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 le 7 Mar 2021
if size(C,1) == 1 && size(C,2) == 1
delete(emptynew);
end

Connectez-vous pour commenter.

Plus de réponses (1)

Fangjun Jiang
Fangjun Jiang le 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 commentaires
Walter Roberson
Walter Roberson le 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 le 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?

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by