lsを使用してタイプ別にファイルを一覧表示するには?

lsを使用してタイプ別にファイルを一覧表示するには?

lsoptions とともにコマンドを使用する場合、最初の文字ストリングは-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で表されるファイル形式でフィルタリングできますfd

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の出力をパイプする必要があると思います。

関連情報