web-dev-qa-db-ja.com

tcshまたはbashのシンボリックリンクであるファイルとフォルダーのみを表示する

基本的に私は次のことをしたいです:

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 '\->'
35
vehomzzz

ディレクトリ内のすべてのシンボリックリンクを検索します。

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

隠しファイルのリスト:

ls -ald .*
58
ChristopheD
ls -l | grep lrw 

シンボリックリンク(ファイルとディレクトリ)のみを表示します。しかし、それらをどのようにカラフルにするかわかりません。

ls -lad .* 

非表示のファイル/ディレクトリのみを表示します

ls -l | grep drw

ディレクトリのみを表示します。

13
John Shirey

「非表示」フォルダのみ-ドットフォルダの場合:

ls -l .**

はい、2つのアスタリスクが必要です。それ以外の場合はも表示されます。と..結果で。

シンボリックリンクについては、symlinksプログラムを試してください。

symlinks -v .

(現在のディレクトリにあるすべてのシンボリックリンクを表示します)

13
jmanning2k

シンボリックリンクとそのリンク先を表示するには:

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
9
Michael Sandler

あなたはあなたのgrepソリューションでほとんどそこにいました。もう一度あなたの色を手に入れることに集中しましょう。

これを試して:

 ls --color = always -ltra | grep '->' 
7
pbr

@ChristopheDの承認された回答を少し改善する(十分な評判がないため、承認された回答についての適切なコメント)

エイリアスを使用します

findsymlinks <path> <depth> 

エイリアスは

alias findsymlinks "find \!:1 -maxdepth \!:2 -type l -print | xargs ls -l --color=auto" 
5
Pranav Rai

ファイルタイプフラグを試して、追加されている@を削除します

ls -F /home/usr/foo | grep "@" | sed 's/@//'
3
Shang Wu

(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)
2
supergra
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ディレクトリを省略する必要があります

1
alignedfibers

bashの場合:
これは素晴らしい出力を提供します。

 sl = `find -L/path/to/target -xtype l`; $ sl内のリンク。 do ls --color = always -ltra $ links;完了| sed 's/^//'
1
user3254833

使用法: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
0
Justin D.