Technical help with a directory search issue, please ?

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 3.00 out of 5)
Loading...
By Oliver (AKA the Admin) on 22 comments
in Categories: Just Talking

Hello everyone !

On my windows7 PC, I don’t know how to achieve something. Could I ask you ? :)

Emergency update : I’m working right now and I don’t have time to do more than this quick update, but I saw a lot of new comments, and I MUST write it at once : the comments engine eats antislashes, argh ! Please, use pastebin or equivalents for code lines, sorry I forgot about that issue when making the post ! T__T

I want to search a REAL HUGE location (inside an NTFS partition) and get a list, in order to remove them later, of all the directories that do NOT contain a .zip or a .rar file. Not in a sub-sub-subfolder, in its very current insides.
I’ll “save” a few directories, but the vast majority of them, the ones that don’t directly contain a zip/rar, will be deleted by me.

Those folders also contain other files, but the only criteria is the presence of a .zip and/or .rar file.
If there’s none of those two archive types, then the folder must be shown to me (either as a browsable list, or as a text outputted list that I can use – for deletions – later).

Would you know how to do it ? Please ?
The default Windows search isn’t helpful, but maybe Total Commander, or any other utility (I may install programs if needed, and I can create batch files), might help ?
I would even be ready to boot a Linux liveCD and write+run a bash script after having mounted the partition, if Linux is the only one that can get it done.

Thanks if you can share your ideas on this, it’s to prepare my next gigatorrent, I don’t want to have to browse thousands of folders to remove all unnecessary empty folders that could increase clutter :)

Subscribe
Notify of
guest

22 Comments
oldest
newest most voted
Inline Feedbacks
View all comments
brrrrrrrr
brrrrrrrr
9 years ago

chek if you have remuved the hiden files option then go and see agen

Oliver AKA The Admin
Admin
9 years ago
Reply to  brrrrrrrr

… what ?

tadaku
tadaku
9 years ago

I'm pretty fluent in bash scripting (read linux shell scripts) if you want. Post a sample with the same directory and file structure and I'll test it.

Oliver AKA The Admin
Admin
9 years ago
Reply to  tadaku

Ah, well, basically, the structure would be
g:
0 mangas
1 CGs
2 Picture packs
3 Vids
4 Animated gifs

Inside 0 mangas, for instance, extracts :
Yamatogawa
> contents >
Yamatogawa, Aqua Bless <a href="http:// (www.hentairules.net)” target=”_blank”> <a href="http://(www.hentairules.net)” target=”_blank”>(www.hentairules.net) [English]
Yamatogawa, canvas [English] <a href="http:// (www.hentairules.net)” target=”_blank”> <a href="http://(www.hentairules.net)” target=”_blank”>(www.hentairules.net)
Yamatogawa, Witchcraft <a href="http:// (www.hentairules.net)” target=”_blank”> <a href="http://(www.hentairules.net)” target=”_blank”>(www.hentairules.net) (English, Uncensored Tank)

Inside Yamatogawa, Aqua Bless <a href="http:// (www.hentairules.net)” target=”_blank”> <a href="http://(www.hentairules.net)” target=”_blank”>(www.hentairules.net) [English]
> contents >
liens.txt
hentairulesbanner.png
orgasm.jpg
Yamatogawa,_Aqua_Bless_ <a href="http:// (www.hentairules.net)_(English).zip” target=”_blank”> <a href="http://(www.hentairules.net)_(English).zip” target=”_blank”>(www.hentairules.net)_(English).zip
Preview Pics

The latter, Preview pics, is a folder with, inside 000.jpg, 0xx.jpg, 0yy.jpg, the images that served as preview pics for this post

It can be many other things, there are plenty of reasons, for me, to keep subfolders not containing zips/rars, for instance additional information, bonus pics, private files from people with whom I was in relation and that must not become public.

Some rare subfolders without archives are legit (like the top directories), but most of them aren't, and I need their list for scrutiny and removal :)

FellowLurker
FellowLurker
9 years ago

Do you know the C# language?
I just made a simple code (Console Application) for your needs, you can compile it using Visual Studio Express. It's my way of saying thanks for all the good hentai :D

using System;
using System.IO;
using System.Linq;
using System.Text;

public class Test
{
public static void Main()
{
const string folderPath = @"C:Coding"; // Replace according to your needs

const string outputListFilePath = @"C:TEMPoutput.txt"; // Replace according to your needs

var allSubdirs = new DirectoryInfo(folderPath).GetDirectories();
var wantedDirs = allSubdirs.Where(d => d.GetFiles().Any(f => f.Extension == ".rar" || f.Extension == ".zip"));
var wantedDirsPaths = wantedDirs.Select(d => d.FullName).ToArray();

File.WriteAllLines(outputListFilePath, wantedDirsPaths, Encoding.Default);
}
}

Oliver AKA The Admin
Admin
9 years ago
Reply to  FellowLurker

The farest I went into coding was Python (fun, although I should have gone at the point where it would become useful… I didn't), but I wouldn't mind installing a C compiler, why not, as long as it does the job ^^

I'll see if there are easier answers by the next two days, and otherwise, on to C ! ^^

Thank you Fellow Lurker :)

Hypo
Hypo
9 years ago
Reply to  FellowLurker

From what i See, your code would return all the folders containing a zip or rar file, but Oliver is looking for the folders without these type of files. I don't have my C# environment here, but I suppose it should be GetFiles().Except() instead of GetFiles().Any().

isxek
isxek
9 years ago

I would use Everything for that http://www.voidtools.com/. Let it build its search index for a moment after installing it, then you should be able to search. It also supports a subset of regex, if you're familiar with it.

ShadowFox
ShadowFox
9 years ago

First Time Posting long time Lurker, I use this program alot when I have to remove a crap load of folder but need to st a parameter to make sure I dont delete certain folders.
http://www.jonasjohn.de/red.htm
FREE Windows program to remove empty folders

Under the Setting Tab where it says "Ignore these files" Just type in the differnet typeof files you want it to delete even if it isnt empty (*.jpg, *.png, etc) and it will treat those folders as empty as well

Works up to windows 8.1 (tested)

Ion
Ion
9 years ago

With Unix commands I would try a list of directories, then get a list of zip/rar files. Then compare them using something like vimdiff.

# find . -type d | sort >> directories.txt

# find . -name ‘*.zip’ -o -name ‘*.rar’ | sort >> files.txt

# vimdiff directories.txt files.txt

Or with those two files (in perl) just build a hash with directories as keys, and remove matches with a zip or rar.

DeGravity
DeGravity
9 years ago
Reply to  Ion

«find» can be used to do all of the above PLUS deleting the unwanted directories in just ONE command. And one may install e.g. cygwin in to have it at one's disposal at all time without needing to boot from some live CD

evangeline_tan
evangeline_tan
9 years ago

He's using Windows, therefore also DOS.
Very simple. Use this example to search from your partition, whatever driveletter it uses.

Open a Command prompt and it will show you this:
C:UsersYour_username_account>

Type this followed by Enter after each line:
cd..
cd,,
And it will show you this:
C:>

If you know your partitition driveletter then just type its driveletter at the command prompt followed by the enter key and search from its root. Example: C:Usersyour_account_username>F:
Now type this:
dir *.zip /s /oe >> Directories.txt

What it will do is search for all zip files on your partition or driveletter, and order them by their extension and that output will be written onto a textfile which you can use as reference to discriminate folders without .zip files (or .rar if you change the syntax to *.rar).

Here's an example output:
Volume Label is SystemHDD
Volume serial number is: A861-46FB

Directorio de C:Usersyour_account_usernameAppDataLocalLowAdobeAcrobat10.0

13/02/2013 05:47 p.m. 38,893 rdrmessage.zip
1 archivos 38,893 bytes

Directorio de C:Usersyour_account_usernameAppDataRoamingAzureuspluginsaefeatman_v

10/02/2013 02:36 p.m. 54,691 aefeatman_v_1.2.zip
1 archivos 54,691 bytes

Directorio de C:Usersyour_account_usernameAppDataRoamingAzureuspluginsazlocprov

29/10/2013 02:38 a.m. 1,304,128 azlocprov_0.1.6.3.zip
20/09/2013 04:08 a.m. 1,294,543 azlocprov_0.1.6.2.zip
2 archivos 2,598,671 bytes

Directorio de C:Usersyour_account_usernameAppDataRoamingAzureuspluginsaznettor

09/04/2014 02:01 p.m. 1,606,588 aznettor_0.6.2.zip
1 archivos 1,606,588 bytes

Directorio de C:Usersyour_account_usernameAppDataRoamingAzureuspluginsazutp

10/02/2013 02:36 p.m. 903,070 azutp_0.2.9.zip
26/06/2013 12:08 a.m. 1,005,705 azutp_0.3.10.zip
15/05/2013 04:34 a.m. 1,005,465 azutp_0.3.9.zip
05/03/2014 04:09 p.m. 185,781 azutp_0.5.3.zip
20/04/2014 03:25 a.m. 185,738 azutp_0.5.4.zip
10/02/2013 02:36 p.m. 902,863 azutp_0.2.8.zip

Since this effectively excludes any directory without a zip file inside it and also tells you its path it is quite easy to use this to determine what you need, since those directories are to be kept and all the others wouls not.

evangeline_tan
evangeline_tan
9 years ago

There's an error above:
When you type: cd.. both instances use dots not commas. My bad.

evangeline_tan
evangeline_tan
9 years ago

For some reason the comment box doesn't allow the inverted slash character to show, so the above example could be wrongly displayed. There are inverted slashes after the : and in between the Users and your_username_account, etc. Be wary of that.

jhenier13
jhenier13
9 years ago

Ok after some work i have this batch for you (just put the code in a .bat)
Is going to search recursively, beginning where the batch is executed, and the output is and file (in the same directory) with all the directories that NOT have any zip or rar.

You can test it and tell me if i forgot some conditions.

PD: this maybe is going to take a while because is going to search EVERYWHERE starting in the directory where you execute the batch.

@echo off
setlocal enableextensions enabledelayedexpansion

if exist FoldersWithoutZips.txt del FoldersWithoutZips.txt

set root=%CD%
set subfolder=%CD%
set haszips=0

for /R %root% %%x in (.) do (

set subfolder=%%x
set subfolder=!subfolder:~0,-1!

echo SEARCHING ON: !subfolder!

for /F %%f in ('dir /b "!subfolder!*.zip"') do ( set haszips = 1)
for /F %%g in ('dir /b "!subfolder!*.rar"') do ( set haszips = 1)

if !haszips! == 0 ( echo !subfolder! >> FoldersWithoutZips.txt )
)

set /p input= Press ENTER key…

jhenier13
jhenier13
9 years ago
Reply to  jhenier13

You are right the backslashes XD. Here the link to pastebin http://pastebin.com/87tiVnaB

aderef
aderef
9 years ago

From Linux it is really easy. First of all backup. Then copy the folloging lines into a file called searcher.sh; put the file into the main folder (i.e., together with the subfolders you want to search through).
Please do mind that it will automatically move all folders which have no zip or rar file inside into a folder called nozips outside your main folder; a text file with names of moved dirs will also be created.

#!/bin/bash
mkdir ../nozips
IFS=$'nt'
for DIR in */; do
if [ "$(ls $DIR*.{zip,rar} | wc -l)" -ge "1" ]; then
echo ""
else
# change mv with cp to copy the folders, not move them
mv $DIR ../nozips
fi
done
ls ../nozips > ../nozips.txt
exit 0

aderef
aderef
9 years ago
Reply to  aderef

To use the script you must also do in terminal: chmod +x searcher.sh (so that it can be executed)

aderef
aderef
9 years ago
John Morgan
John Morgan
9 years ago

I would suggest deleting the files you don’t want to keep and then delete empty directories, repeating until there are no empty directories to keep.

See http://blogs.msdn.com/b/oldnewthing/archive/2008/04/17/8399914.aspx for an explanation of how to remove empty directories.

Cookie000
Cookie000
9 years ago

If you want just a “huge” list you can give wList a shot: http://www.sharktime.com/us_wList.html

Highly customizable for your needs.

Isxek
Isxek
9 years ago

Here's something I wrote in Python3: http://pastebin.com/SRMv8wd6

You can uncomment some of the lines there if you need to see in which directories those archive files reside (and their actual filename). I did not test it in Python 2, but it _probably_ should work without changing anything.