I need to have an "image" of a file system without actual contents of the files - just all the names and the structure, so that I can read the file and know what files were stored there and how were they located. As always in these kinds of cases, I tend to believe that there is a beautiful "Unix way" to achieve this with a combination of some standard GNU command-line utilities. Am I right? What is it?
2 Answers
Like find / -type f > /tmp/list_of_all_the_files.txt ?
-
Cool! I thought it was even going to be not a command but a script, and you come up with such a simple perfect solution!Ivan– Ivan2011-12-31 02:27:59 +00:00Commented Dec 31, 2011 at 2:27
You can run
ls -R | grep ':$' | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
It shows all subdirectories niftly formatted as a tree.
Sometimes there is also tree utility available in many linux distributions. If not, then you can install it from here.
It provides following output:
~> tree -d /proc/self/
/proc/self/
|-- attr
|-- cwd -> /proc
|-- fd
| `-- 3 -> /proc/15589/fd
|-- fdinfo
|-- net
| |-- dev_snmp6
| |-- netfilter
| |-- rpc
| | |-- auth.rpcsec.context
| | |-- auth.rpcsec.init
| | |-- auth.unix.gid
| | |-- auth.unix.ip
| | |-- nfs4.idtoname
| | |-- nfs4.nametoid
| | |-- nfsd.export
| | `-- nfsd.fh
| `-- stat
|-- root -> /
`-- task
`-- 15589
|-- attr
|-- cwd -> /proc
|-- fd
| `-- 3 -> /proc/15589/task/15589/fd
|-- fdinfo
`-- root -> /
-
It's better not to parse
lsoutput: link.user22304– user223042012-10-14 14:04:38 +00:00Commented Oct 14, 2012 at 14:04
findtag as the command seems to be the solution.