Linux bash files in directory

How to list only files and not directories of a directory Bash?

How can I list all the files of one folder but not their folders or subfiles. In other words: How can I list only the files?

13 Answers 13

Using the -maxdepth 1 option ensures that you only look in the current directory (or, if you replace the . with some path, that directory). If you want a full recursive listing of all files in that and subdirectories, just remove that option.

After my comment to mklement0’s answer, I realized that «find ./*.png -maxdepth 1 -type f > pngs.txt» would probably accomplish the same. It does. Without installing a script.

@Tim: -type and -maxdepth aren’t options in the normal sense; BSD find (as used on OS X) calls them primaries, and they must come after the filename operand(s) ( . , in this case; note that, unlike on Linux, the BSD version needs at least one explicit filename operand); the command in this answer definitely works on a Mac.

@AlexHall: That’s a clever solution (though I suggest find *.png -maxdepth 0 -type f to avoid the ./ prefix in the output filenames; also note the -maxdepth of 0 , not 1 ), as long as all you need is the file names in alphabetical order. If you want what ls can otherwise do for you (different output format/ordering, inline control over whether hidden items are included or not), supplemented with [multi-]type filtering, the script from my answer can help.

To contrast find * -maxdepth 0 -type f (an alternative derived from @AlexHall’s comment) with find . -maxdepth 1 -type f from the answer: find . . invariably includes hidden items, invariably prefixes output filenames with ./ , and, with GNU find (Linux), typically outputs an unsorted list. find * . , due to letting the shell perform globbing up front, by default excludes hidden items (can be changed with shopt -s dotglob ), outputs mere filenames (no prefix), sorted alphabetically. Neither approach includes symlinks to files; use option -L to do so.

Источник

The Linux LS Command – How to List Files in a Directory + Option Flags

Bolaji Ayodeji

Bolaji Ayodeji

The Linux LS Command – How to List Files in a Directory + Option Flags

Since the creation of Unix in the 1970s, a lot of operating systems have used it as their foundation. Many of these operating systems failed, while others succeeded.

Linux is one of the most popular Unix based operating systems. It’s open source, and is used all over the world across many industries.

One amazing feature of the Linux operating system is the Command Line Interface (CLI) which allows users to interact with their computer from a shell. The Linux shell is a REPL (Read, Evaluate, Print, Loop) environment where users can enter a command and the shell runs it and returns a result.

Читайте также:  Настройка kali linux виртуальная машина

The ls command is one of the many Linux commands that allow a user to list files or directories from the CLI.

In this article, we’ll go in depth on the ls command and some of the most important flags you’ll need day-to-day.

Prerequisites

  • A computer with directories and files
  • Have one of the Linux distros installed
  • Basic knowledge of navigating around the CLI
  • A smile on your face 🙂

The Linux ls Command

The ls command is used to list files or directories in Linux and other Unix-based operating systems.

Just like you navigate in your File explorer or Finder with a GUI, the ls command allows you to list all files or directories in the current directory by default, and further interact with them via the command line.

Launch your terminal and type ls to see this in action:

Screenshot-2020-08-20-at-9.40.29-PM

How to list Files in a Directory with Options

The ls command also accepts some flags (also known as options) which are additional information that changes how files or directories are listed in your terminal.

In other words, flags change how the ls command works:

PS: The word contents used in throughout the article refers to the files and directories being listed, not the actual contents of the files/directories ?

List files in the current working directory

Type the ls command to list the contents of the current working directory:

Screenshot-2020-08-20-at-9.40.29-PM

List files in another directory

Type the ls [directory path here] command to list the contents of another directory:

Screenshot-2020-08-20-at-10.32.52-PM

List files in the root directory

Type the ls / command to list the contents of the root directory:

Screenshot-2020-08-20-at-10.46.10-PM

List files in the parent directory

Type the ls .. command to list the contents of the parent directory one level above. Use ls ../.. for contents two levels above:

Screenshot-2020-08-20-at-10.48.22-PM

List files in the user’s home directory (/home/user)

Type the ls ~ command to list the contents in the users’s home directory:

Screenshot-2020-08-20-at-10.51.19-PM

List only directories

Type the ls -d */ command to list only directories:

Screenshot-2020-08-21-at-12.53.05-PM

List files with subdirectories

Type the ls * command to list the contents of the directory with it’s subdirectories:

Screenshot-2020-08-21-at-1.07.54-PM

List files recursively

Type the ls -R command to list all files and directories with their corresponding subdirectories down to the last file:

Screenshot-2020-09-01-at-9.04.56-AM

If you have a lot of files, this can take a very long time to complete as every single file in each directory will be printed out. You can instead specify a directory to run this command in, like so: ls Downloads -R

List files with their sizes

Type the ls -s command (the s is lowercase) to list files or directories with their sizes:

Screenshot-2020-08-21-at-12.30.19-PM

List files in long format

Type the ls -l command to list the contents of the directory in a table format with columns including:

Screenshot-2020-08-20-at-10.52.37-PM

  • content permissions
  • number of links to the content
  • owner of the content
  • group owner of the content
  • size of the content in bytes
  • last modified date / time of the content
  • file or directory name

List files in long format with readable file sizes

Type the ls -lh command to list the files or directories in the same table format above, but with another column representing the size of each file/directory:

Читайте также:  Linux convert gif to mp4

Screenshot-2020-08-21-at-12.14.33-PM

Note that sizes are listed in bytes (B), megabytes (MB), gigabytes (GB), or terabytes (TB) when the file or directory’s size is larger than 1024 bytes.

List files including hidden files

Type the ls -a command to list files or directories including hidden files or directories. In Linux, anything that begins with a . is considered a hidden file:

Screenshot-2020-08-21-at-11.12.26-AM

List files in long format including hidden files

Type the ls -l -a or ls -a -l or ls -la or ls -al command to list files or directories in a table format with extra information including hidden files or directories:

Screenshot-2020-08-21-at-12.17.01-PM

List files and sort by date and time

Type the ls -t command to list files or directories and sort by last modified date in descending order (biggest to smallest).

You can also add a -r flag to reverse the sorting order like so: ls -tr :

Screenshot-2020-08-21-at-12.20.09-PM

List files and sort by file size

Type the ls -S (the S is uppercase) command to list files or directories and sort by size in descending order (biggest to smallest).

You can also add a -r flag to reverse the sorting order like so: ls -Sr :

Screenshot-2020-08-21-at-12.20.38-PM

List files and output the result to a file

Type the ls > output.txt command to print the output of the preceding command into an output.txt file. You can use any of the flags discussed before like -la — the key point here is that the result will be outputted into a file and not logged to the command line.

Then you can use the file as you see fit, or log the contents of the file with cat output.txt :

Screenshot-2020-09-01-at-9.12.59-AM

Conclusion

There are tons of other commands and combinations you can explore to list out files and directories based on your needs. One thing to remember is the ability to combine multiple commands together at once.

Imagine you want to list a file in long format, including hidden files, and sort by file size. The command would be ls -alS , which is a combination of ls -l , ls -a , and ls -S .

If you forget any command or are unsure about what to do, you can run ls —help or man ls which will display a manual with all possible options for the ls command:

Источник

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.

Читайте также:  Linux какие шрифты установлены

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

  1. Go to the folder you want to get a content list from.
  2. Select the files you want in your list ( Ctrl + A if you want the entire folder).
  3. Copy the content with Ctrl + C .
  4. 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.)

Источник

Оцените статью
Adblock
detector