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 '\->'
解決
ディレクトリ内のすべてのシンボリックリンクを検索します。
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