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

StackOverflow https://stackoverflow.com/questions/1412423

  •  06-07-2019
  •  | 
  •  

質問

基本的には、次のことを行います:

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 '\->'
役に立ちましたか?

解決

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

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

隠しファイルのリスト:

ls -ald .*

他のヒント

ls -l | grep lrw 

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

ls -lad .* 

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

ls -l | grep drw

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

「非表示」のみの場合フォルダー-ドットフォルダー、試してください:

ls -l .**

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

symlinksについては、symlinksプログラムを試してください:

symlinks -v .

(現在のディレクトリの下のすべてのシンボリックリンクを表示)

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

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

grepソリューションを使用して、ほぼそこにいました。再びカラーを取得することに集中しましょう。

これを試してください:

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

@ChristopheDによって受け入れられた回答を少し改善します(評判が十分ではないので、受け入れられた回答についてのコメント)

エイリアスを使用しています

findsymlinks <path> <depth> 

エイリアスは

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

ファイルタイプフラグを試して、追加された@を取り除きます

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

(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)

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

sl=`find -L /path/to/target -xtype l`; for links in $sl; do ls --color=always -ltra $links; done | sed 's/^/    /'
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ディレクトリを省略する必要があります

使用法: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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top