117

1つのフォルダのすべてのファイルを一覧表示できますが、フォルダやサブファイルは一覧表示できません。言い換えると、ファイルのみを一覧表示するにはどうすればよいですか?

4

11 に答える 11

163

使用find

find . -maxdepth 1 -type f

このオプションを使用すると、現在のディレクトリ(または、をパスに-maxdepth 1置き換える場合はそのディレクトリ)のみを確認できます。.そのディレクトリとサブディレクトリ内のすべてのファイルの完全な再帰リストが必要な場合は、そのオプションを削除するだけです。

于 2012-05-13T20:06:35.503 に答える
6
  • carlpett のfindベースの answer ( find . -maxdepth 1 -type f) は原理的には機能しますが、使用する場合とまったく同じではありません。ファイル名のリストがソートされていないls可能性があり、接頭辞が./lsすべて.
    また、 ' の動作はまたはオプションの有無によって異なりますが、find 常に非表示のアイテムも検索されます。ls-a-A

    • 質問に対するコメントでAlex Hallが提案した改善点は、シェルのグロビング次のように組み合わせることです。find

          find * -maxdepth 0 -type f  # find -L * ... includes symlinks to files
      
      • ただし、これはプレフィックスの問題に対処し、アルファベット順にソートされた出力を提供しますが、非表示のアイテムを含めることを (インラインで) 制御したりls、他の多くのソート/出力形式オプションにアクセスしたりすることはできません。
  • Hans Roggeman のls+grep回答は実用的ですが、 long ( -l) output formatを使用する必要があります。


これらの制限に対処するために、fls( filtering ls ) ユーティリティを作成しました。

  • 出力の柔軟性をls提供すると同時に型フィルタリング機能も提供するユーティリティ
  • ファイル、ディレクトリ、シンボリックリンクなどのタイプフィルタリング文字を引数のリストの前に配置するだけです(実行するか、詳細を確認してください)。fdllsfls --helpfls --man

例:

fls f        # list all files in current dir.
fls d -tA ~  #  list dirs. in home dir., including hidden ones, most recent first
fls f^l /usr/local/bin/c* # List matches that are files, but not (^) symlinks (l)

インストール

サポートされているプラ​​ットフォーム

  • npm レジストリからインストールする場合: LinuxおよびmacOS
  • 手動でインストールする場合: Bashを使用する任意のUnix ライクなプラットフォーム

npm レジストリから

注: Node.js を使用しない場合でも、そのパッケージ マネージャーでnpmある はプラットフォーム間で動作し、インストールも簡単です。試す
curl -L https://git.io/n-install | bash

Node.jsをインストールしたら、次のようにインストールします。

[sudo] npm install fls -g

:

  • 必要かどうかsudoは、Node.js / io.js のインストール方法と、後で権限を変更したかどうかによって異なります。エラーが発生した場合はEACCES、 で再試行してくださいsudo

  • グローバルインストール-gを保証し、システムのに配置する必要があります。fls$PATH

手動インストール

  • このbashスクリプトを としてダウンロードしますfls
  • で実行可能にしchmod +x flsます。
  • (macOS) や(Linux)$PATHなどの 内のフォルダーに移動するか、シンボリック リンクを作成します。/usr/local/bin/usr/bin
于 2015-06-03T11:35:56.197 に答える
1

またはとls一緒に使用して、プロファイルにエイリアスとして配置することもできます。grepegrep

ls -l | egrep -v '^d'
ls -l | grep -v '^d'
于 2014-01-21T13:10:46.163 に答える
-2

カールペットの答えに追加するだけです。ファイルを非常に便利に表示するには、出力を ls にパイプすることができます。

find . -maxdepth 1 -type f|ls -lt|less

最近変更されたファイルをリスト形式で表示します。大量のファイルをダウンロードして、最近のファイルの整理されたバージョンを見たい場合に非常に便利です。

于 2015-03-04T03:58:49.080 に答える
-2

「find '-maxdepth'」は古いバージョンの bash では機能しないため、次を使用します。

for f in $(ls) ; [ -f $f ] の場合に行います。次に $f をエコーし​​ます。ファイ; 終わり

于 2016-10-12T13:40:47.080 に答える