- Recursively list all files in a directory including files in symlink directories
- 8 Answers 8
- ls command in Linux/Unix
- ls syntax
- ls command options
- ls command examples
- ls code generator
- Get a list of all files in folder and sub-folder in a file
- 7 Answers 7
- tree
- How to List All Files in a Directory in Linux
- How to List All Files in a Directory in Linux
Recursively list all files in a directory including files in symlink directories
Suppose I have a directory /dir inside which there are 3 symlinks to other directories /dir/dir11 , /dir/dir12 , and /dir/dir13 . I want to list all the files in dir including the ones in dir11 , dir12 and dir13 . To be more generic, I want to list all files including the ones in the directories which are symlinks. find . , ls -R , etc stop at the symlink without navigating into them to list further.
8 Answers 8
The -L option to ls will accomplish what you want. It dereferences symbolic links.
You can also accomplish this with
The -follow option directs find to follow symbolic links to directories.
as -follow has been deprecated.
@pjz: is there a cross-reference for ‘-follow deprecated; use -L’? Somewhat to my considerable surprise, I did find ‘-L’ and ‘-H’ listed in the POSIX / SUS standard at opengroup.org/onlinepubs/009695399/toc.htm, and even more to my surprise no ‘-follow’, so I answered my own question.
this didn’t work for me. first nothing happened then i tried with -follow — and it said it couln’t find the folder ollow
Your answer is good, but I want to follow only file paths(full path to file) and not directory path, how can I do it ?
How about tree? tree -l will follow symlinks.
Disclaimer: I wrote this package.
It is a nice interface, but sometimes tree is not available and you cannot add it to the system you are trying to explore.
find /dir -type f -follow -print
-type f means it will display real files (not symlinks)
-follow means it will follow your directory symlinks
-print will cause it to display the filenames.
If you want a ls type display, you can do the following
find /dir -type f -follow -print|xargs ls -l
-L, --dereference when showing file information for a symbolic link, show informa‐ tion for the file the link references rather than for the link itself
If you find you want to only follow a few symbolic links (like maybe just the toplevel ones you mentioned), you should look at the -H option, which only follows symlinks that you pass to it on the commandline.
I knew tree was an appropriate, but I didn’t have tree installed. So, I got a pretty close alternate here
find -L /var/www/ -type l # man find
-L Follow symbolic links. When find examines or prints information about files, the information used shall be taken from the
properties of the file to which the link points, not from the link itself (unless it is a broken symbolic link or find is unable to examine the file to which the link points). Use of this option implies -noleaf. If you later use the -P option, -noleaf will still be in effect. If -L is in effect and find discovers a symbolic link to a subdirectory during its search, the subdirectory pointed to by the symbolic link will be searched.
ls command in Linux/Unix
ls is a Linux shell command that lists directory contents of files and directories.
ls syntax
$ ls [options] [file|dir]
ls command options
option | description |
---|---|
ls -a | list all files including hidden file starting with ‘.’ |
ls —color | colored list [=always/never/auto] |
ls -d | list directories — with ‘ */’ |
ls -F | add one char of */=>@| to enteries |
ls -i | list file’s inode index number |
ls -l | list with long format — show permissions |
ls -la | list long format including hidden files |
ls -lh | list long format with readable file size |
ls -ls | list with long format with file size |
ls -r | list in reverse order |
ls -R | list recursively directory tree |
ls -s | list file size |
ls -S | sort by file size |
ls -t | sort by time & date |
ls -X | sort by extension name |
ls command examples
You can press the tab button to auto complete the file or folder names.
List directory Documents/Books with relative path:
List directory /home/user/Documents/Books with absolute path.
List user’s home directory (e.g: /home/user):
List with long format and show hidden files:
Recursive directory tree list:
List only text files with wildcard:
ls redirection to output file:
List files and directories with full path:
ls code generator
Select ls options and press the Generate Code button:
Get a list of all files in folder and sub-folder in a file
How do I get a list of all files in a folder, including all the files within all the subfolders and put the output in a file?
7 Answers 7
You can do this on command line, using the -R switch (recursive) and then piping the output to a file thus:
this will make a file called filename1 in the current directory, containing a full directory listing of the current directory and all of the sub-directories under it.
You can list directories other than the current one by specifying the full path eg:
will list everything in and under /var and put the results in a file in the current directory called filename2. This works on directories owned by another user including root as long as you have read access for the directories.
You can also list directories you don’t have access to such as /root with the use of the sudo command. eg:
sudo ls -R /root > filename3
Would list everything in /root, putting the results in a file called filename3 in the current directory. Since most Ubuntu systems have nothing in this directory filename3 will not contain anything, but it would work if it did.
Maybe telling the person to cd into the directory first could be added to answer.Also this works fine if i own the directory but if trying in a directory say owned by root it didnt.I got the usual permission denied and sudo followed by your command also gave permission denied. IS there a work around without logging in as root?
Well I did say «current» directory. The correct use of CD might the subject of another question, and I’m sure it has been. You can list directories owned by root as long as you have read access to them. Directories owned by root to which the user has read access can be listed with ls -R. It’s hard to imagine why you’d want to list directories owned by root to which you don’t have read access, but sudo does indeed work if you give the full path. I’m adding examples for both of these, but excluding the use of CD.
Just use the find command with the directory name. For example to see the files and all files within folders in your home directory, use
Also check find GNU info page by using info find command in a terminal.
This is the most powerful approach. find has many parameters to customize output format and file selection.
That’s the best approach in my opinion. Simple and practical. Could also do $ find . > output if there’s many directories.
tree
An alternative to recursive ls is the command line tool tree that comes with quite a lot of options to customize the format of the output diplayed. See the manpage for tree for all options.
will give you the same as tree using other characters for the lines.
to display hidden files too
- Go to the folder you want to get a content list from.
- Select the files you want in your list ( Ctrl + A if you want the entire folder).
- Copy the content with Ctrl + C .
- Open gedit and paste the content using Ctrl + V . It will be pasted as a list and you can then save the file.
This method will not include subfolder, content though.
You could also use the GUI counterpart to Takkat’s tree suggestion which is Baobab. It is used to view folders and subfolders, often for the purpose of analysing disk usage. You may have it installed already if you are using a GNOME desktop (it is often called disk usage analyser).
sudo apt-get install baobab
You can select a folder and also view all its subfolders, while also getting the sizes of the folders and their contents as the screenshot below shows. You just click the small down arrow to view a subfolder within a folder. It is very useful for gaining a quick insight into what you’ve got in your folders and can produce viewable lists, but at the present moment it cannot export them to file. It has been requested as a feature, however, at Launchpad. You can even use it to view the root filesystem if you use gksudo baobab .
(You can also get a list of files with their sizes by using ls -shR ~/myfolder and then export that to file.)
How to List All Files in a Directory in Linux
Sometimes you may need to list all files in a directory in Linux, or list all files in directory recursively with full paths of files in directory. Here’s how to list all files in a directory in Linux
How to List All Files in a Directory in Linux
Here are the commands to list all files in a directory in Linux.
Here’s the command to list all files in a specific directory
Here’s an example to list all files and sub folders in a specific directory (e.g /home/products)
~$ ls /home/products Apps bkp blog.ods Getting Started.pdf Photos Public
You can use the -a option to list all files in a directory including hidden files (starting with . filename)
$ ls -a /home/products . Apps blog.ods .dropbox.cache Photos .. bkp .dropbox Getting Started.pdf Public
You can use the -l option to list all files in directory with more details such as user permissions, owners, file size, and last modified date
$ ls -l /home/products total 476 drwxrwxr-x 3 ubuntu ubuntu 4096 Oct 7 2018 Apps drwxrwxr-x 2 ubuntu ubuntu 4096 Aug 20 06:15 bkp -rw-rw-r-- 1 ubuntu ubuntu 175560 Apr 6 2018 blog.ods -rw-rw-r-- 1 ubuntu ubuntu 268860 Feb 5 2011 Getting Started.pdf drwxrwxr-x 2 ubuntu ubuntu 4096 Oct 7 2018 Photos drwxrwxr-x 2 ubuntu ubuntu 4096 Oct 7 2018 Public
You can list all files in a directory recursively using -R option
$ ls -R /home/products /home/products/: Apps bkp blog.ods Getting Started.pdf Photos Public /home/products/Apps: Crossbox /home/products/Apps/Crossbox: /home/products/bkp: an_blog_file.gz fed_file.gz myapp_Saturday.gz myapp_Tuesday.gz blog_file.gz myapp_Friday.gz myapp_Sunday.gz myapp_Wednesday.gz db_blog_file.gz myapp_Monday.gz myapp_Thursday.gz wb_blog_file.gz /home/products/Photos: How to use the Photos folder.rtf /home/products/Public: How to use the Public folder.rtf
Hopefully, now you can easily list files in directory Linux / Unix.
Ubiq makes it easy to visualize data in minutes, and monitor in real-time dashboards. Try it Today!