diff --git a/docs/parsers/dir.md b/docs/parsers/dir.md index 4bdb4ca7..c84b3334 100644 --- a/docs/parsers/dir.md +++ b/docs/parsers/dir.md @@ -27,209 +27,213 @@ Compatibility: Examples: $ dir | jc --dir -p -m - [ - { - "date": "03/24/2021", - "time": "03:15 PM", - "dir": "", - "size": null, - "filename": "." - }, - { - "date": "03/24/2021", - "time": "03:15 PM", - "dir": "", - "size": null, - "filename": ".." - }, - { - "date": "12/07/2019", - "time": "02:49 AM", - "dir": "", - "size": null, - "filename": "en-US" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": 54784, - "filename": "ExtExport.exe" - }, - { - "date": "03/24/2021", - "time": "03:15 PM", - "dir": null, - "size": 0, - "filename": "file name.txt" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": 54784, - "filename": "hmmapi.dll" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": 515072, - "filename": "iediagcmd.exe" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": 504832, - "filename": "ieinstal.exe" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": 224768, - "filename": "ielowutil.exe" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": 421888, - "filename": "IEShims.dll" - }, - { - "date": "12/06/2019", - "time": "02:47 PM", - "dir": null, - "size": 819136, - "filename": "iexplore.exe" - }, - { - "date": "12/07/2019", - "time": "02:14 AM", - "dir": "", - "size": null, - "filename": "images" - }, - { - "date": "12/07/2019", - "time": "02:14 AM", - "dir": "", - "size": null, - "filename": "SIGNUP" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": 48536, - "filename": "sqmapi.dll" - } - ] + { + "C:\Program Files\Internet Explorer": [ + { + "date": "03/24/2021", + "time": "03:15 PM", + "dir": true, + "size": null, + "filename": "." + }, + { + "date": "03/24/2021", + "time": "03:15 PM", + "dir": true, + "size": null, + "filename": ".." + }, + { + "date": "12/07/2019", + "time": "02:49 AM", + "dir": true, + "size": null, + "filename": "en-US" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": 54784, + "filename": "ExtExport.exe" + }, + { + "date": "03/24/2021", + "time": "03:15 PM", + "dir": false, + "size": 0, + "filename": "file name.txt" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": 54784, + "filename": "hmmapi.dll" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": 515072, + "filename": "iediagcmd.exe" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": 504832, + "filename": "ieinstal.exe" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": 224768, + "filename": "ielowutil.exe" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": 421888, + "filename": "IEShims.dll" + }, + { + "date": "12/06/2019", + "time": "02:47 PM", + "dir": false, + "size": 819136, + "filename": "iexplore.exe" + }, + { + "date": "12/07/2019", + "time": "02:14 AM", + "dir": true, + "size": null, + "filename": "images" + }, + { + "date": "12/07/2019", + "time": "02:14 AM", + "dir": true, + "size": null, + "filename": "SIGNUP" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": 48536, + "filename": "sqmapi.dll" + } + ] + } $ dir | jc --dir -p -m -r - [ - { - "date": "03/24/2021", - "time": "03:15 PM", - "dir": "", - "size": null, - "filename": "." - }, - { - "date": "03/24/2021", - "time": "03:15 PM", - "dir": "", - "size": null, - "filename": ".." - }, - { - "date": "12/07/2019", - "time": "02:49 AM", - "dir": "", - "size": null, - "filename": "en-US" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": "54,784", - "filename": "ExtExport.exe" - }, - { - "date": "03/24/2021", - "time": "03:15 PM", - "dir": null, - "size": "0", - "filename": "file name.txt" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": "54,784", - "filename": "hmmapi.dll" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": "515,072", - "filename": "iediagcmd.exe" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": "504,832", - "filename": "ieinstal.exe" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": "224,768", - "filename": "ielowutil.exe" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": "421,888", - "filename": "IEShims.dll" - }, - { - "date": "12/06/2019", - "time": "02:47 PM", - "dir": null, - "size": "819,136", - "filename": "iexplore.exe" - }, - { - "date": "12/07/2019", - "time": "02:14 AM", - "dir": "", - "size": null, - "filename": "images" - }, - { - "date": "12/07/2019", - "time": "02:14 AM", - "dir": "", - "size": null, - "filename": "SIGNUP" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": "48,536", - "filename": "sqmapi.dll" - } - ] + { + "C:\Program Files\Internet Explorer": [ + { + "date": "03/24/2021", + "time": "03:15 PM", + "dir": true, + "size": null, + "filename": "." + }, + { + "date": "03/24/2021", + "time": "03:15 PM", + "dir": true, + "size": null, + "filename": ".." + }, + { + "date": "12/07/2019", + "time": "02:49 AM", + "dir": true, + "size": null, + "filename": "en-US" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": "54,784", + "filename": "ExtExport.exe" + }, + { + "date": "03/24/2021", + "time": "03:15 PM", + "dir": false, + "size": "0", + "filename": "file name.txt" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": "54,784", + "filename": "hmmapi.dll" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": "515,072", + "filename": "iediagcmd.exe" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": "504,832", + "filename": "ieinstal.exe" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": "224,768", + "filename": "ielowutil.exe" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": "421,888", + "filename": "IEShims.dll" + }, + { + "date": "12/06/2019", + "time": "02:47 PM", + "dir": false, + "size": "819,136", + "filename": "iexplore.exe" + }, + { + "date": "12/07/2019", + "time": "02:14 AM", + "dir": true, + "size": null, + "filename": "images" + }, + { + "date": "12/07/2019", + "time": "02:14 AM", + "dir": true, + "size": null, + "filename": "SIGNUP" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": "48,536", + "filename": "sqmapi.dll" + } + ] + } diff --git a/jc/parsers/dir.py b/jc/parsers/dir.py index 4a3b03f9..bd42622e 100644 --- a/jc/parsers/dir.py +++ b/jc/parsers/dir.py @@ -4,6 +4,7 @@ Options supported: - `/T timefield` - `/O sortorder` - `/C, /-C` +- `/S` Usage (cli): @@ -25,209 +26,213 @@ Compatibility: Examples: $ dir | jc --dir -p -m - [ - { - "date": "03/24/2021", - "time": "03:15 PM", - "dir": "", - "size": null, - "filename": "." - }, - { - "date": "03/24/2021", - "time": "03:15 PM", - "dir": "", - "size": null, - "filename": ".." - }, - { - "date": "12/07/2019", - "time": "02:49 AM", - "dir": "", - "size": null, - "filename": "en-US" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": 54784, - "filename": "ExtExport.exe" - }, - { - "date": "03/24/2021", - "time": "03:15 PM", - "dir": null, - "size": 0, - "filename": "file name.txt" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": 54784, - "filename": "hmmapi.dll" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": 515072, - "filename": "iediagcmd.exe" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": 504832, - "filename": "ieinstal.exe" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": 224768, - "filename": "ielowutil.exe" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": 421888, - "filename": "IEShims.dll" - }, - { - "date": "12/06/2019", - "time": "02:47 PM", - "dir": null, - "size": 819136, - "filename": "iexplore.exe" - }, - { - "date": "12/07/2019", - "time": "02:14 AM", - "dir": "", - "size": null, - "filename": "images" - }, - { - "date": "12/07/2019", - "time": "02:14 AM", - "dir": "", - "size": null, - "filename": "SIGNUP" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": 48536, - "filename": "sqmapi.dll" - } - ] + { + "C:\\Program Files\\Internet Explorer": [ + { + "date": "03/24/2021", + "time": "03:15 PM", + "dir": true, + "size": null, + "filename": "." + }, + { + "date": "03/24/2021", + "time": "03:15 PM", + "dir": true, + "size": null, + "filename": ".." + }, + { + "date": "12/07/2019", + "time": "02:49 AM", + "dir": true, + "size": null, + "filename": "en-US" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": 54784, + "filename": "ExtExport.exe" + }, + { + "date": "03/24/2021", + "time": "03:15 PM", + "dir": false, + "size": 0, + "filename": "file name.txt" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": 54784, + "filename": "hmmapi.dll" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": 515072, + "filename": "iediagcmd.exe" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": 504832, + "filename": "ieinstal.exe" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": 224768, + "filename": "ielowutil.exe" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": 421888, + "filename": "IEShims.dll" + }, + { + "date": "12/06/2019", + "time": "02:47 PM", + "dir": false, + "size": 819136, + "filename": "iexplore.exe" + }, + { + "date": "12/07/2019", + "time": "02:14 AM", + "dir": true, + "size": null, + "filename": "images" + }, + { + "date": "12/07/2019", + "time": "02:14 AM", + "dir": true, + "size": null, + "filename": "SIGNUP" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": 48536, + "filename": "sqmapi.dll" + } + ] + } $ dir | jc --dir -p -m -r - [ - { - "date": "03/24/2021", - "time": "03:15 PM", - "dir": "", - "size": null, - "filename": "." - }, - { - "date": "03/24/2021", - "time": "03:15 PM", - "dir": "", - "size": null, - "filename": ".." - }, - { - "date": "12/07/2019", - "time": "02:49 AM", - "dir": "", - "size": null, - "filename": "en-US" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": "54,784", - "filename": "ExtExport.exe" - }, - { - "date": "03/24/2021", - "time": "03:15 PM", - "dir": null, - "size": "0", - "filename": "file name.txt" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": "54,784", - "filename": "hmmapi.dll" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": "515,072", - "filename": "iediagcmd.exe" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": "504,832", - "filename": "ieinstal.exe" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": "224,768", - "filename": "ielowutil.exe" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": "421,888", - "filename": "IEShims.dll" - }, - { - "date": "12/06/2019", - "time": "02:47 PM", - "dir": null, - "size": "819,136", - "filename": "iexplore.exe" - }, - { - "date": "12/07/2019", - "time": "02:14 AM", - "dir": "", - "size": null, - "filename": "images" - }, - { - "date": "12/07/2019", - "time": "02:14 AM", - "dir": "", - "size": null, - "filename": "SIGNUP" - }, - { - "date": "12/07/2019", - "time": "02:09 AM", - "dir": null, - "size": "48,536", - "filename": "sqmapi.dll" - } - ] + { + "C:\\Program Files\\Internet Explorer": [ + { + "date": "03/24/2021", + "time": "03:15 PM", + "dir": true, + "size": null, + "filename": "." + }, + { + "date": "03/24/2021", + "time": "03:15 PM", + "dir": true, + "size": null, + "filename": ".." + }, + { + "date": "12/07/2019", + "time": "02:49 AM", + "dir": true, + "size": null, + "filename": "en-US" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": "54,784", + "filename": "ExtExport.exe" + }, + { + "date": "03/24/2021", + "time": "03:15 PM", + "dir": false, + "size": "0", + "filename": "file name.txt" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": "54,784", + "filename": "hmmapi.dll" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": "515,072", + "filename": "iediagcmd.exe" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": "504,832", + "filename": "ieinstal.exe" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": "224,768", + "filename": "ielowutil.exe" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": "421,888", + "filename": "IEShims.dll" + }, + { + "date": "12/06/2019", + "time": "02:47 PM", + "dir": false, + "size": "819,136", + "filename": "iexplore.exe" + }, + { + "date": "12/07/2019", + "time": "02:14 AM", + "dir": true, + "size": null, + "filename": "images" + }, + { + "date": "12/07/2019", + "time": "02:14 AM", + "dir": true, + "size": null, + "filename": "SIGNUP" + }, + { + "date": "12/07/2019", + "time": "02:09 AM", + "dir": false, + "size": "48,536", + "filename": "sqmapi.dll" + } + ] + } """ import re diff --git a/tests/fixtures/windows-10/dir-S.json b/tests/fixtures/windows-10/dir-S.json new file mode 100644 index 00000000..d17d89f7 --- /dev/null +++ b/tests/fixtures/windows-10/dir-S.json @@ -0,0 +1 @@ +{"C:\\Program Files\\Internet Explorer": [{"date": "03/24/2021", "time": "03:15 PM", "dir": true, "size": null, "filename": "."}, {"date": "03/24/2021", "time": "03:15 PM", "dir": true, "size": null, "filename": ".."}, {"date": "12/07/2019", "time": "02:49 AM", "dir": true, "size": null, "filename": "en-US"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 54784, "filename": "ExtExport.exe"}, {"date": "03/24/2021", "time": "03:15 PM", "dir": false, "size": 0, "filename": "file name.txt"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 54784, "filename": "hmmapi.dll"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 515072, "filename": "iediagcmd.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 504832, "filename": "ieinstal.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 224768, "filename": "ielowutil.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 421888, "filename": "IEShims.dll"}, {"date": "12/06/2019", "time": "02:47 PM", "dir": false, "size": 819136, "filename": "iexplore.exe"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "images"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "SIGNUP"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 48536, "filename": "sqmapi.dll"}], "C:\\Program Files\\Internet Explorer\\en-US": [{"date": "12/07/2019", "time": "02:49 AM", "dir": true, "size": null, "filename": "."}, {"date": "12/07/2019", "time": "02:49 AM", "dir": true, "size": null, "filename": ".."}, {"date": "12/07/2019", "time": "02:48 AM", "dir": false, "size": 2560, "filename": "hmmapi.dll.mui"}, {"date": "12/07/2019", "time": "02:48 AM", "dir": false, "size": 2560, "filename": "ieinstal.exe.mui"}, {"date": "12/07/2019", "time": "02:48 AM", "dir": false, "size": 5632, "filename": "iexplore.exe.mui"}], "C:\\Program Files\\Internet Explorer\\images": [{"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "."}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": ".."}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 5430, "filename": "bing.ico"}], "C:\\Program Files\\Internet Explorer\\SIGNUP": [{"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "."}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": ".."}, {"date": "12/07/2019", "time": "02:12 AM", "dir": false, "size": 452, "filename": "install.ins"}]} \ No newline at end of file diff --git a/tests/fixtures/windows-10/dir-S.out b/tests/fixtures/windows-10/dir-S.out new file mode 100644 index 00000000..3a09b5a7 --- /dev/null +++ b/tests/fixtures/windows-10/dir-S.out @@ -0,0 +1,47 @@ + Volume in drive C has no label. + Volume Serial Number is 246B-3B5A + + Directory of C:\Program Files\Internet Explorer + +03/24/2021 03:15 PM . +03/24/2021 03:15 PM .. +12/07/2019 02:49 AM en-US +12/07/2019 02:09 AM 54,784 ExtExport.exe +03/24/2021 03:15 PM 0 file name.txt +12/07/2019 02:09 AM 54,784 hmmapi.dll +12/07/2019 02:09 AM 515,072 iediagcmd.exe +12/07/2019 02:09 AM 504,832 ieinstal.exe +12/07/2019 02:09 AM 224,768 ielowutil.exe +12/07/2019 02:09 AM 421,888 IEShims.dll +12/06/2019 02:47 PM 819,136 iexplore.exe +12/07/2019 02:14 AM images +12/07/2019 02:14 AM SIGNUP +12/07/2019 02:09 AM 48,536 sqmapi.dll + 9 File(s) 2,643,800 bytes + + Directory of C:\Program Files\Internet Explorer\en-US + +12/07/2019 02:49 AM . +12/07/2019 02:49 AM .. +12/07/2019 02:48 AM 2,560 hmmapi.dll.mui +12/07/2019 02:48 AM 2,560 ieinstal.exe.mui +12/07/2019 02:48 AM 5,632 iexplore.exe.mui + 3 File(s) 10,752 bytes + + Directory of C:\Program Files\Internet Explorer\images + +12/07/2019 02:14 AM . +12/07/2019 02:14 AM .. +12/07/2019 02:09 AM 5,430 bing.ico + 1 File(s) 5,430 bytes + + Directory of C:\Program Files\Internet Explorer\SIGNUP + +12/07/2019 02:14 AM . +12/07/2019 02:14 AM .. +12/07/2019 02:12 AM 452 install.ins + 1 File(s) 452 bytes + + Total Files Listed: + 14 File(s) 2,660,434 bytes + 11 Dir(s) 33,300,922,368 bytes free diff --git a/tests/test_dir.py b/tests/test_dir.py index 8fdb8004..197496ca 100644 --- a/tests/test_dir.py +++ b/tests/test_dir.py @@ -57,6 +57,14 @@ class MyTests(unittest.TestCase): 'r', encoding='utf-8') as f: self.windows_10_dir_dirs_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-S.out'), + 'r', encoding='utf-8') as f: + self.windows_10_dir_S= f.read() + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-S.json'), + 'r', encoding='utf-8') as f: + self.windows_10_dir_S_json = json.loads(f.read()) + def test_dir_error(self): self.assertEqual(jc.parsers.dir.parse("Access is denied.", quiet=True), {}) @@ -91,6 +99,10 @@ class MyTests(unittest.TestCase): self.assertEqual(jc.parsers.dir.parse(self.windows_10_dir_dirs, quiet=True), self.windows_10_dir_dirs_json) + def test_dir_windows_10_S(self): + self.assertEqual(jc.parsers.dir.parse(self.windows_10_dir_S, quiet=True), + self.windows_10_dir_S_json) + if __name__ == '__main__': unittest.main()