現在のディレクトリ内のファイルをリストするときにディレクトリを除外するにはどうすればよいですか?
ls .
^リストにディレクトリが含まれます。
現在のディレクトリ内のファイルをリストするときにディレクトリを除外するにはどうすればよいですか?
ls .
^リストにディレクトリが含まれます。
回答:
これを試してください:
find . -maxdepth 1 -not -type d
ls .
ディレクトリなしの同等のものを要求しました。
-ls
か、ディレクトリなしの-exec ls -l {} \;
ようls -l
にします。
正確に同等にls .
するには、隠れた日記を表示しないでください。
find . -maxdepth 1 -not -type d -and -not -name '.*'
そして、それでも各ファイル名の前に './'が付いたままになります。それは本当に問題ではありませんが、私はそれはちょっといだと思います。私は一緒に行きました:
ls -p | grep -v '/$'
そして、それはあなたに同じように見えるリストを取得し、あなたも追加のls
引数を追加することができます。を追加する--color=always
と、dircolorsが返されるか-a
、隠しファイルが表示されます。
アレクサンダーの答えが好きです。なぜなら、彼は実際に問題のファイルのファイルシステム特性に依存しているので、だまされないからです。私の答えは、名前の最後の文字が「/」であるファイルにだまされます。しかし、それはトラブルを求めているようです。
それは古い投稿ですが、私はこれが役立つかもしれないと思った..
$ ls -l | grep -v ^ d
シンボリックリンク、キャラクター、ブロックファイルを含むすべてのファイルがリストされます。
上記の「検索」ソリューションでは、lsの機能の一部が失われます。たとえば、ファイルのみをリストし、変更時刻の降順にソートします。
「ls -p | grep」の回答は、必要に応じて-Rなどのlsの他の要素をエレガントに処理しません。
私の意見では、より冗長ですが、次の答えは、「ファイルのみ」を選択するための真のls動作と最も柔軟性を反映しています
ls -t . | while read line; do
if [ -f $line ]; then
echo $line
fi
done
必要に応じてlsスイッチを置き換えるだけで、ファイルのみで結果が返されます。リンクやその他のアイテムも必要な場合は、テストのためにマイナーな修正を行う必要があります。