回答:
find dirname -not -empty -ls
GNU findを想定してを使用します。
ls
、あなたが使用find
;)私も引き上げた...それは適切なソリューションです
これは、lsが十分に強力ではないことを発見するための仕事です。
find -maxdepth 1 -size +0 -print
-maxdepth 1
-これは、現在のディレクトリのみを検索するか、すべてのサブディレクトリを検索するか、2、3、またはそれ以上のレベルに下がるように番号を変更するようにfindに指示します。
-size +0
これは、サイズが0
バイトよりも大きいファイルを探すようにfindに指示します。0
任意のサイズに変更できます。
-print
見つけたファイルへのフルパスを印刷するようにfindに指示します
編集:
後期追加:おそらく-type f
上記のスイッチも追加する必要があります。これは、ファイルのみを検索するように検索に指示します。また、以下のコメントで指摘されているように、-print
切り替えは実際には必要ありません。
-maxdepth 1
前に置くべき-size +0
です。また、-print
デフォルトのアクションであるので、それは必要ありません。
find
有効なオプションとは何であるかという点で、実装は大きく異なります。GNU find
(これは非常に一般的です)の前に置くと、警告が生成されます。-size
-maxdepth
Lsにはファイルをフィルタリングするオプションがほとんどありません。それは仕事ではありません。ファイルのフィルタリングは、単純な場合(グロビングによる)のシェルの仕事であり、複雑な場合の検索の仕事です。
zshでは、L
グロビング修飾子を使用して、サイズが0より大きいファイルのみを保持できます(.
修飾子は通常のファイルに制限されます)。
ls *(.L+0)
他のシェルのユーザーは、findを使用する必要があります。GNU findを使用した場合(主にLinuxで見られる):
find -maxdepth 1 -type f ! -empty -exec ls {} +
POSIX準拠の方法は次のとおりです。
find . -type f -size +0c -exec ls {} + -o -name . -o -prune
ls
単なる例ではなく、視覚的な検査だけを目的としている場合は、サイズで並べ替えることができますls -S
。