Hi there,
The commands are actually different:
1. "show flash" will display the layout and contents of a flash based memory system, you will also notice that this displays the contents of sub folders as well (recursive).
More information in the IOS fundimentals guide here: http://www.cisco.com/c/en/us/td/docs/ios/fundamentals/command/reference/cf_book/cf_s1.html
router1#show flash:
-#- --length-- ---------date/time--------- path
1 4096 Sep 03 2016 06:40:23 +00:00 /bootflash/
2 16384 Feb 25 2016 19:23:07 +00:00 /bootflash/lost+found
3 4096 Feb 25 2016 19:23:41 +00:00 /bootflash/.super.iso.dir
4 286708160 Feb 25 2016 19:23:32 +00:00 /bootflash/.super.iso.dir/csr1000v-mono-universalk9.03.16.00.S.155-3.S-ext.SPA.pkg
5 4874 Feb 25 2016 19:23:32 +00:00 /bootflash/.super.iso.dir/csr1000v-packages-universalk9.03.16.00.S.155-3.S-ext.conf
6 4874 Feb 25 2016 19:23:32 +00:00 /bootflash/.super.iso.dir/packages.conf
7 45 May 08 2016 16:49:15 +00:00 /bootflash/.CsrLxc_LastInstall
--- output truncated ---
6504517632 bytes available (933064704 bytes used)
2. "dir flash" is to view the contents of a file system, it is not recursive (only displays files/folders within the specified directory).
Unlike the "show" command, the "dir" command can also be used without arguments, it will run on the current present working directory. The current working directory can be shown with the "pwd" command.
router1#dir flash:
Directory of bootflash:/
11 drwx 16384 Feb 25 2016 19:23:07 +00:00 lost+found
146017 drwx 4096 Feb 25 2016 19:23:41 +00:00 .super.iso.dir
12 -rw- 45 May 8 2016 16:49:15 +00:00 .CsrLxc_LastInstall
13 -rw- 83 Feb 25 2016 19:25:44 +00:00 virtual-instance.conf
275809 drwx 4096 Feb 25 2016 19:25:07 +00:00 .ssh
15 -rw- 161587200 Feb 25 2016 19:23:41 +00:00 iosxe-remote-mgmt.03.16.00.S.155-3.S-ext.ova
--- output truncated ---
7835619328 bytes total (6504517632 bytes free)