Linux просмотр только ссылок

I have a symbolic link in my /var/www/ directory that links to WordPress. When I run the command ls -la from the /var/www/ directory the link to WordPress doesn’t show up. Is there a way to list all of the symbolic links that are in a directory?

10 Answers 10

Parsing ls is a Bad Idea®, prefer a simple find in that case:

To only process the current directory:

find . -maxdepth 1 -type l -ls 

Great answer! I adjusted mine to not descend down directory path like this: find / -maxdepth 1 -type l -ls 2>/dev/null Thank you!

@GabrielStaples from man find: -ls True; list current file in ls -dils format on standard output. Useful to see ./os-release -> ../usr/lib/os-release in /etc rather than just ./os-release

You can use grep with ls command to list all the symbolic links present in the current directory.

This will list all the links present in the current directory.

Please, do not use ls for scripting. Also mentioned in other answers. More: mywiki.wooledge.org/ParsingLs

ls -lhaF | grep ^l # list links ls -lhaF | grep ^d # list directories ls -lhaF | grep ^- # list files 

This will list lines starting with «l» which represent Links in the perms column in place of l use d for directories and — for files

Just don’t do anything with this method programatically since malicious filenames can end up injecting shell code. To be safe, one should use the find command with -exec , and if piping to xargs , use the null-character separator output flag of find combined with the null-character separator input flag of xargs .

@MtlDev ! negates the condition matching, here ! -name . means matching everything except current directory.

This returns all symbolically linked items (both dirs & fns) in a directory:

find . -maxdepth 1 -type l -print | cut -c3- | grep -v "\#" 

However, in order to distinguish between actual symbolically linked item types:

ls -lhaF | grep ^l | grep -v "\#" | cut -c42- | grep -v "/" | cut -d' ' -f1 

Returns symbolically linked filename items only. And,

ls -lhaF | grep ^l | grep -v "\#" | cut -c42- | grep "/" | cut -d' ' -f1 

Returns symbolically linked dirname items only.

Читайте также:  Образ trassir os linux

To view the symbolic links in a directory:

  1. Open a terminal and move to that directory.
  2. Type the command:
ls -l *(@) lrwxrwxrwx 1 david david 15 Nov 18 22:35 gvimrc -> /etc/vim/gvimrc lrwxrwxrwx 1 david david 13 Nov 18 22:19 mydomains.php -> mydomains.php 

Type ls -lai ,it will list all the files and subdirectories with corresponding inode numbers.You know files with same inode number are the links(hard or soft) and this solution also works for the symbolic links.

ls -lai does not show the same inode number for a file and its symbolic links. Unlike hard links, symbolic links have their own separate inode entries. This is what it looks like.

Can be done with python as well:

$ python -c "import os,sys; print '\n'.join([os.path.join(sys.argv[1],i) for i in os.listdir(sys.argv[1]) if os.path.islink(os.path.join(sys.argv[1],i))])" /path/to/dir 
$ python -c "import os,sys; print '\n'.join([os.path.join(sys.argv[1],i) for i in os.listdir(sys.argv[1]) if os.path.islink(os.path.join(sys.argv[1],i))])" /etc /etc/vtrgb /etc/printcap /etc/resolv.conf /etc/os-release /etc/mtab /etc/localtime 

This can be extended to be recursive via os.walk function, but it’s sufficient to use simple list generation for listing links in a single directory as I showed above.

Источник

The symbolic link, also known as symlink or soft link, is the file type that can hold the location of a file or directory in any Linux file system. You have created a couple of Symbolic links in your Linux filesystem, and sometimes there comes a need to list all the symbolic links. This post provides you with a step-by-step guide on how to list all symlinks in a Linux filesystem or a specific Linux directory.

From a couple of ways to list all the symbolic links in a Linux directory, we will follow the reliable and best way using the find command.

Find command comes in handy when finding any type of file or folder in a Linux operating system.

Syntax

To find the symbolic links in any Linux operating system, the syntax is as follows:

is the location or directory name in which you want to search for the symbolic link,

-type is referencing the file type,

while l is representing the link file type.

Alright, let’s have a look at the examples and see how can we get the symbolic links listed in different ways by going through a couple of examples:

Examples

Using the find command, we can list the symlinks from the entire filesystem or in a specific directory. Let’s take a look at each example:

To list all the symlinks from the entire filesystem, you can execute the following find command by providing the “/” as path:

The “/” in the above command represents the entire file system, and the find command will search for the symbolic links from all over the system and list them out in the terminal.

Similarly, if you want to find and list all the symlinks in the current working directory, then simply provide the “.” as a path to the find command as shown below:

In the above command, the “.” tells the find command to find the symlinks in the current working directory.

To list all the symlinks in any directory, just provide the directory path to the find command as shown below:

The find command will look for the symbolic links in the /var/www/ directory only and list out all the symbolic links in that directory.

You might have noticed that all the above commands displayed the symbolic links in the desired directory and showed all the symbolic links from the subdirectories, as well.

So, what if you do not want to go into this much depth? You just want to have the symbolic links in the specified directory. The solution to that problem is not rocket science, and we can quickly mention the depth using the maxdepth flag.

For example, to set the search depth to level one, the find command would go like this:

You can witness the output shown in the screenshot given above. The find command has shown only the symbolic links of the current working directory instead of all the subdirectories.

Conclusion

This post has provided multiple ways and gives a brief explanation on how to list all the symbolic links in the Linux filesystem or a specific Linux directory. Using the find command, we have learned to find and list down all the symbolic links and set the maximum depth level using the maxdepth flag. If you want to learn and explore more about the find command, feel free to read the man page of find using the “man find” command.

About the author

Shehroz Azam

A Javascript Developer & Linux enthusiast with 4 years of industrial experience and proven know-how to combine creative and usability viewpoints resulting in world-class web applications. I have experience working with Vue, React & Node.js & currently working on article writing and video creation.

Источник

🐧 Как перечислить символические ссылки в Linux

Мы уже знаем, что такое Симлинки или Символические ссылки, или Мягкие ссылки и как найти и удалить неработающие Симлинки из нашей системы Linux.

Если вы давно создали несколько символических ссылок и полностью забыли о них, этот быстрый совет поможет вам легко найти их с помощью команды «find».

Список символических ссылок на Linux

Чтобы получить список всех символических или cофт линков в системе Linux, выполните:

  • / – представляет всю файловую систему.
  • -type – относится к типу файла.
  • l – относится к символической ссылке.

Эта команда будет искать все доступные символические ссылки во всей файловой системе.

Это займет некоторое время в зависимости от размера вашей файловой системы.

Пожалуйста, будьте терпеливы!

Если вы хотите ограничить поиск по символической ссылке в определенном каталоге, укажите его путь, как показано ниже.

Например, следующая команда выведет список всех программных ссылок в текущем каталоге:

./snap/multipass/current ./snap/multipass/1597/.config/autostart ./snap/multipass/1597/config/autostart/multipass.gui.autostart.desktop ./snap/multipass/1784/.config/autostart ./snap/multipass/1784/config/autostart/multipass.gui.autostart.desktop ./.local/share/webkitgtk/databases/indexeddb/v0 find: ‘./.dbus’: Permission denied ./.config/spyder-py3/spyder.lock ./Downloads/Tor browser/Browser/.config/ibus/bus ./.mozilla/firefox/htoypxlg.default-1563118799416/lock

Если вы хотите искать символические ссылки в другом каталоге, замените точку (.) на путь к каталогу.

Если вы хотите получить подробный вывод, включая метки времени, права доступа к файлам, владельца и группу, используйте следующую команду:

4458987 0 lrwxrwxrwx 1 sk sk 4 Mar 6 13:58 ./snap/multipass/current -> 1784 11927799 0 lrwxrwxrwx 1 sk sk 19 Mar 5 11:20 ./snap/multipass/1597/.config/autostart -> ../config/autostart 11932200 4 lrwxrwxrwx 1 sk sk 72 Feb 27 15:30 ./snap/multipass/1597/config/autostart/multipass.gui.autostart.desktop -> /snap/multipass/1597/usr/share/multipass/multipass.gui.autostart.desktop 11534358 0 lrwxrwxrwx 1 sk sk 19 Mar 17 11:51 ./snap/multipass/1784/.config/autostart -> ../config/autostart 11666096 4 lrwxrwxrwx 1 sk sk 72 Mar 6 13:58 ./snap/multipass/1784/config/autostart/multipass.gui.autostart.desktop -> /snap/multipass/1784/usr/share/multipass/multipass.gui.autostart.desktop 5246237 0 lrwxrwxrwx 1 sk sk 51 Feb 12 20:14 ./.local/share/webkitgtk/databases/indexeddb/v0 -> /home/sk/.local/share/webkitgtk/databases/indexeddb find: ‘./.dbus’: Permission denied 4459630 0 lrwxrwxrwx 1 sk sk 5 Jan 24 17:39 ./.config/spyder-py3/spyder.lock -> 18461 4340805 0 lrwxrwxrwx 1 sk sk 25 Feb 15 15:21 ./Downloads/Tor\ browser/Browser/.config/ibus/bus -> /home/sk/.config/ibus/bus 4328111 0 lrwxrwxrwx 1 sk sk 20 Mar 17 11:56 ./.mozilla/firefox/htoypxlg.default-1563118799416/lock -> 192.168.225.37:+2642

Как вы могли заметить в приведенных выше выходных данных, команда find ищет символические ссылки в текущем каталоге и его подкаталогах.

Если вы хотите перечислить все символические ссылки на один уровень в текущем каталоге, используйте флаг maxdepth, как показано ниже.

$ find . -type l -printf '%p -> %l\n'
./snap/multipass/current -> 1784 ./snap/multipass/1597/.config/autostart -> ../config/autostart ./snap/multipass/1597/config/autostart/multipass.gui.autostart.desktop -> /snap/multipass/1597/usr/share/multipass/multipass.gui.autostart.desktop ./snap/multipass/1784/.config/autostart -> ../config/autostart ./snap/multipass/1784/config/autostart/multipass.gui.autostart.desktop -> /snap/multipass/1784/usr/share/multipass/multipass.gui.autostart.desktop ./.local/share/webkitgtk/databases/indexeddb/v0 -> /home/sk/.local/share/webkitgtk/databases/indexeddb find: ‘./.dbus’: Permission denied ./.config/spyder-py3/spyder.lock -> 18461 ./Downloads/Tor browser/Browser/.config/ibus/bus -> /home/sk/.config/ibus/bus ./.mozilla/firefox/htoypxlg.default-1563118799416/lock -> 192.168.225.37:+2642

Для более подробной информации обратитесь к справочным страницам.

Источник

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