As part of my testing routines for the new IBMi Data Distribution commands (DSTDTA and DSTSPLF) I was creating and testing all kinds of documents in the integrated File system. Taking any file from the good ole AS400 and converting it to TXT, PDF, XML, TIF, CSV and plopping a copy into the IFS or DLS, then sending it as a very saucy looking email to the users... It works beautifully now but "whats that got to do with malformed file names" I hear you mutter.
Well OK then.
So, while I was writing these programs I had a brain-fart and accidentally create IFS objects with completely invalid file names... its possible to actually call a file '\this\is\a\file.txt' (with slashes as part of the file name) and as you can imagine Windows Explorer just completely gets its knickers in a twist. trying to figure out what folder that is in... Not Good.
So I have this file called '\projex\test.pdf' and its stored in a folder called '/home/nlitten'
So lets go and do a WRKLNK to delete the file in question. No Joy. It tells me it cant delete it, because it cant find it... aaaargh!!!!
These problems happen because your program that is creating IFS files uses a '\' when it should have used a '/' (for internal IBMi IFS operations).
Running a RCLSTG wont help as these files aren’t damaged they’re just named badly. Neither will attacking it from within iSeries Navigator. It just seems to be stuck there... forever... eating up some storage.
So how do we delete malformed IFS documents?
It's actually very easy
with IBMi's super sexy and simple EDTF command.
If you use EDTF at a root level - EDTF STMF(/) - you get a very basic screen showing every object in your IFS listing.
Navigate to your folder containing the malformed files, select them with a 4 (or even simply '9' the folder to recursively delete the lot) and press ENTER and Voila!
Dirty files are completed killed.
EDTF is like a 1980's Bulletin Board version of SEU which works for any streamfile or even for flat files defined in libraries on the 400.