1つのフォルダのすべてのファイルを一覧表示できますが、フォルダやサブファイルは一覧表示できません。言い換えると、ファイルのみを一覧表示するにはどうすればよいですか?
11 に答える
使用find
:
find . -maxdepth 1 -type f
このオプションを使用すると、現在のディレクトリ(または、をパスに-maxdepth 1
置き換える場合はそのディレクトリ)のみを確認できます。.
そのディレクトリとサブディレクトリ内のすべてのファイルの完全な再帰リストが必要な場合は、そのオプションを削除するだけです。
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
提供すると同時に型フィルタリング機能も提供するユーティリティ - ファイル、ディレクトリ、シンボリックリンクなどのタイプフィルタリング文字を引数のリストの前に配置するだけです(実行するか、詳細を確認してください)。
f
d
l
ls
fls --help
fls --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
。
手動インストール
- この
bash
スクリプトを としてダウンロードしますfls
。 - で実行可能にし
chmod +x fls
ます。 - (macOS) や(Linux)
$PATH
などの 内のフォルダーに移動するか、シンボリック リンクを作成します。/usr/local/bin
/usr/bin
またはとls
一緒に使用して、プロファイルにエイリアスとして配置することもできます。grep
egrep
ls -l | egrep -v '^d'
ls -l | grep -v '^d'
カールペットの答えに追加するだけです。ファイルを非常に便利に表示するには、出力を ls にパイプすることができます。
find . -maxdepth 1 -type f|ls -lt|less
最近変更されたファイルをリスト形式で表示します。大量のファイルをダウンロードして、最近のファイルの整理されたバージョンを見たい場合に非常に便利です。
「find '-maxdepth'」は古いバージョンの bash では機能しないため、次を使用します。
for f in $(ls) ; [ -f $f ] の場合に行います。次に $f をエコーします。ファイ; 終わり