ls
options とともにコマンドを使用する場合、最初の文字ストリングは-l
各ファイルに関する情報を提供し、ストリングの最初の文字はファイル・タイプを提供します。 (d
=ディレクトリ、-
=標準ファイル、l
=リンクなど)
最初の文字に基づいてファイルをフィルタリングする方法は?
答え1
grep
以下を使用して、ディレクトリを除くすべての項目をフィルタリングできます。
ls -l | grep '^d'
^
パターンが行の先頭にあることを示します。該当する場合などd
に交換してください。-
l
もちろん、別のコマンドを使用して特定の型(たとえばfind . -maxdepth 1 -type d
)を直接検索したり、ls -l | sort
最初の文字に基づいて同様の型をグループ化したりできますが、フィルタリングするには、grep
出力から適切な行のみを選択する必要があります。
答え2
すべての出力を表示しますが、同じ種類のファイルを一緒に一覧表示したい場合は、各行の最初の文字に基づいて出力を並べ替えることができます。
ls -l | sort -k1,1
答え3
コマンドのls
処理中です。ファイル名、ディレクトリデータ構造に書き込まれます。したがって、ファイルの「タイプ」を含むファイル自体には実際には気にしません。
タスクのためのより良いコマンド実際の文書は名前以上ですfind
。ファイル形式のリストをフィルタリングする方法に関する質問に直接答えるオプションがあります。
これは、次のような現在のディレクトリのリストを提供しますls -l
。
find . -maxdepth 1 -ls
デフォルトでは、find
ディレクトリは繰り返し表示され、検索の深さを1に制限してこの機能を無効にします。省略できますが、.
オプションの前にリストする必要があるディレクトリを表示するために含めました。
を使用すると、通常のファイルまたはディレクトリ-type
で表されるファイル形式でフィルタリングできますf
。d
find . -maxdepth 1 -type d -ls
-type
特にl
シンボリックリンクの場合は、他のフィルタ値があります。
参考にしてくださいシンボリックリンクの複雑さ:この場合、2種類のファイルがあります。l
シンボリックリンクを表すファイルとリンクさf
れているファイルタイプを表す同様のファイル。これを処理する方法を指定するオプションがあるので、選択できます。
~からman find
:
-type c
File is of type c:
b block (buffered) special
c character (unbuffered) special
d directory
p named pipe (FIFO)
f regular file
l symbolic link; this is never true if the -L option
or the -follow option is in effect, unless the sym‐
bolic link is broken. If you want to search for
symbolic links when -L is in effect, use -xtype.
s socket
D door (Solaris)
シンボリックリンク処理に関する:
-xtype c
The same as -type unless the file is a symbolic link. For
symbolic links: if the -H or -P option was specified, true
if the file is a link to a file of type c; if the -L option
has been given, true if c is `l'. In other words, for sym‐
bolic links, -xtype checks the type of the file that -type
does not check.
そして
-P Never follow symbolic links. This is the default behav‐
iour. When find examines or prints information a file, and
the file is a symbolic link, the information used shall be
taken from the properties of the symbolic link itself.
-L Follow symbolic links. When find examines or prints infor‐
mation about files, the information used shall be taken
from the properties of the file to which the link points,
not from the link itself (unless it is a broken symbolic
link or find is unable to examine the file to which the
link points). Use of this option implies -noleaf. If you
later use the -P option, -noleaf will still be in effect.
If -L is in effect and find discovers a symbolic link to a
subdirectory during its search, the subdirectory pointed to
by the symbolic link will be searched.
When the -L option is in effect, the -type predicate will
always match against the type of the file that a symbolic
link points to rather than the link itself (unless the sym‐
bolic link is broken). Using -L causes the -lname and
-ilname predicates always to return false.
-H Do not follow symbolic links, except while processing the
command line arguments. [...]
答え4
別のファイル形式のフォルダを並べ替えることが最も懸念される場合は、次のいずれかを選択できます。
ls --group-directories-first
それ以外の場合は、Anthonの答えに従ってsortまたはgrepを介してls -lの出力をパイプする必要があると思います。