ファイルをリストするときにディレクトリを除外するにはどうすればよいですか?


21

現在のディレクトリ内のファイルをリストするときにディレクトリを除外するにはどうすればよいですか?

ls .

^リストにディレクトリが含まれます。

回答:


23

これを試してください:

find . -maxdepth 1 -not -type d

3
シンプルにしてください:$ find。-type f
ジャム

9
いいえ。(1)再帰的であり、(2)シンボリックリンクをリストしません。@Steveは、ls .ディレクトリなしの同等のものを要求しました。
アレクサンダーグラディシュ

2
追加する-lsか、ディレクトリなしの-exec ls -l {} \;ようls -lにします。
ラダダダダ

15

正確に同等にls .するには、隠れた日記を表示しないでください。

find . -maxdepth 1 -not -type d -and -not -name '.*'

そして、それでも各ファイル名の前に './'が付いたままになります。それは本当に問題ではありませんが、私はそれはちょっといだと思います。私は一緒に行きました:

ls -p | grep -v '/$'

そして、それはあなたに同じように見えるリストを取得し、あなたも追加のls引数を追加することができます。を追加する--color=alwaysと、dircolorsが返されるか-a、隠しファイルが表示されます。

アレクサンダーの答えが好きです。なぜなら、彼は実際に問題のファイルのファイルシステム特性に依存しているので、だまされないからです。私の答えは、名前の最後の文字が「/」であるファイルにだまされます。しかし、それはトラブルを求めているようです。


1
'-not'はGNU find関連であり、POSIX準拠ではないため、ユーザーが「悪い」習慣を持ち、他のUNIXで失われたと感じる可能性があるため、これらのオプションを教えないほうがよい:)
jirib

2
@JiriXichtkniha -notのPOSIXの代替は何ですか?
ルーカスガリンド

5

これを試して:

$ find。-type f -maxdepth 1

またはこれ:

$ ls -p | egrep -v / $

$ ls -la | egrep -v ^ d


3

それは古い投稿ですが、私はこれが役立つかもしれないと思った..

$ ls -l | grep -v ^ d

シンボリックリンク、キャラクター、ブロックファイルを含むすべてのファイルがリストされます。


この回答は、1年以上前にjamzedによって提供されました(この視覚的なノイズを生成します)
Alexx Roche

2

上記の「検索」ソリューションでは、lsの機能の一部が失われます。たとえば、ファイルのみをリストし、変更時刻の降順にソートします。

「ls -p | grep」の回答は、必要に応じて-Rなどのlsの他の要素をエレガントに処理しません。

私の意見では、より冗長ですが、次の答えは、「ファイルのみ」を選択するための真のls動作と最も柔軟性を反映しています

ls -t . | while read line; do
  if [ -f $line ]; then
    echo $line
  fi 
done

必要に応じてlsスイッチを置き換えるだけで、ファイルのみで結果が返されます。リンクやその他のアイテムも必要な場合は、テストのためにマイナーな修正を行う必要があります。


0
ls $(file --no-pad  -F' '  * | grep -v directory | cut -d' ' -f1)

これにより、ls通常は他のオプションを使用できます。または...削除-vしてディレクトリのみをリストします。または...ディレクトリをfile、ASCII、空、ELFなど、理解および報告する他のファイルタイプに置き換えます。


リストされるファイル名にスペースが含まれる場合、これは機能しません。
サイコノー

ls -t .|while read f;do [ -f "$f" ]&& echo $f;doneより速く私のテストでは3倍程度である
Alexxロシュ

0

私はfindバイナリがサポート-notしていないシステムにいて、最終的に次のものを使用しました:

ls|while read f;do [ -f "$f" ]&& echo $f;done

利点は:以外に依存しないsh ls echo
bashのダッシュと互換性のある
変更することで、(ディレクトリなど)他のことを、一致するように変更することができますが-f
、最速の答えや用途少ないRAMとCPUのいくつかよりもです

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.