38

基本上我想做以下事情:

ls -l[+someflags]

(或通过其他方式)仅显示符号链接的文件

所以输出看起来

-rw-r--r--  1 username grp   size date-time    filename -> somedir
-rw-r--r--  1 username grp   size date-time    filename2 -> somsdfsdf

等等

例如,

只显示目录我有一个别名:

alias  lsd  'ls -l | grep ^d'

我想知道如何只显示隐藏文件或只显示隐藏目录?

我有以下解决方案,但是它不显示彩色输出:(

ls -ltra | grep '\->'
4

11 回答 11

63

查找目录中的所有符号链接:

ls -l `find /usr/bin -maxdepth 1 -type l -print`

对于隐藏文件的列表:

ls -ald .*
于 2009-09-11T18:06:38.737 回答
13

仅对于“隐藏”文件夹 - 点文件夹,请尝试:

ls -l .**

是的,这两个星号是必需的,否则你也会得到 . 和..在结果中。

对于符号链接,请尝试符号链接程序:

symlinks -v .

(显示当前目录下的所有符号链接)

于 2009-09-11T18:27:07.893 回答
12
ls -l | grep lrw 

仅显示符号链接(文件和目录)。不过,不知道如何让它们变得丰富多彩。

ls -lad .* 

仅显示隐藏文件/目录

ls -l | grep drw

仅显示目录。

于 2014-07-17T17:11:27.900 回答
8

仅显示符号链接及其链接的内容:

find -P . -type l -exec echo -n "{} -> " \; -exec readlink {} \;

仅限于此目录

find -P .  -maxdepth 1 -type l -exec echo -n "{} -> " \; -exec readlink {} \;

示例输出(在 ln -s /usr/bin moo 之后):

./moo -> /usr/bin
于 2014-05-19T19:15:10.860 回答
6

您的 grep 解决方案几乎就在那里;让我们专注于让您再次获得色彩。

试试这个:

ls --color=always -ltra | grep '->'
于 2009-09-25T21:58:39.193 回答
5

对@ChristopheD 给出的已接受答案进行了一些改进(由于我没有足够的声誉,因此无法对已接受的答案发表评论)

我使用别名

findsymlinks <path> <depth> 

别名在哪里

alias findsymlinks "find \!:1 -maxdepth \!:2 -type l -print | xargs ls -l --color=auto" 
于 2015-01-21T09:46:19.587 回答
2

尝试文件类型标志并去掉附加的@

ls -F /home/usr/foo | grep "@" | sed 's/@//'
于 2012-03-13T21:08:41.700 回答
1

对于 (t)csh

ls --color=always -ltra | grep '\->'

(这只是pbr 的答案,但连字符转义了。)

Mac OSX

在 OSX 上,ls工作方式不同,因此将其添加到您的~/.cshrc文件中:

setenv CLICOLOR_FORCE 1   # (equivalent of Linux --color=always)

然后调用:

ls -G -ltra | grep '\->'  # (-G is equivalent of ls --color)
于 2013-12-14T22:40:36.833 回答
0

对于 bash:
这提供了很好的输出。

sl=`find -L /path/to/target -xtype l`; $sl 中的链接;做 ls --color=always -ltra $links; 完成 | sed 's/^/ /'
于 2014-01-30T20:09:18.703 回答
0
echo > linklist.found && $(for i in `find /path/to/dir/ -type l`; do echo `ls -d --color=always  $i` `echo " -> "`  $(ls -d --color=always `readlink -f $i`) >> linklist.found; echo >> linklist.found;  done;) && cat linklist.found | more

这对我很有用,但是如果您要搜索 / 文件系统根目录,则需要省略 proc 目录

于 2014-02-10T07:53:38.457 回答
-1

用法: foo $path

如果未指定,则使用当前路径。

#!/bin/bash

case "$1" in

    -r)
    find $2 -type l -print | while IFS= read line ; do ls -l --color=always "$line"; done
    ;;

    --help)
    echo 'Usage: foo [-r] [$PATH]'
    echo    
    echo '-r  Recursive'
    ;;


    *)
    ls --color=always -ltra $1 | grep '\->'
esac
于 2014-12-29T01:48:00.367 回答