試しましたls /etc/[ac]*
が、aまたはcで始まるディレクトリとその内容全体が表示され、「a」または「c」で始まるファイルは表示されません。
ls -d /etc/[ac]*
ます。一致するディレクトリの内容は取得できませんが、ディレクトリ名は表示されます。これがあなたの望んでいることなのか、それともディレクトリ名をリストすることさえ避けたいのかははっきりしていません。
試しましたls /etc/[ac]*
が、aまたはcで始まるディレクトリとその内容全体が表示され、「a」または「c」で始まるファイルは表示されません。
ls -d /etc/[ac]*
ます。一致するディレクトリの内容は取得できませんが、ディレクトリ名は表示されます。これがあなたの望んでいることなのか、それともディレクトリ名をリストすることさえ避けたいのかははっきりしていません。
回答:
ディレクトリの内容を一覧表示しないようにするには、次の方法があります。
ls -d /etc/[ac]*
またはで始まる通常のファイル名とともにディレクトリ名が一覧表示されます。a
c
完全を期すために、関係しfind
ないソリューションは次のようになります。
ls -ld /etc/[ac]* | grep ^- | tr -s ' ' | cut -d' ' -f9
ls -d
適切に思われましたが、元の質問では、展開または非展開に関係なく、ディレクトリを一覧表示しないように指定されているようです。
ls -ld /etc/[ac]* | grep ^- | tr -s ' ' | cut -d' ' -f9
解析しませんls
。
ls
は私の意見では公正なゲームです。
/etc
正気である可能性が非常に高いls
ですが、フィールド番号が変更されるため、単純なスペースはアプローチを壊します。でも+1 ls -ld
。
LC_ALL=C
)も修正する必要があります。他のロケールでは、日付に3つのフィールドがあるとは限りません。
再帰的に:
find /etc -type f -name '[ac]*'
非再帰が必要な場合は、移植性のある方法でこれを行うことができます。
find /etc/. ! -name . -prune -type f -name '[ac]*'
または、これは移植性がありません(GNUまたは最近のBSD検索):
find /etc -type f -maxdepth 1 -name '[ac]*'
この大文字と小文字を区別せずに実行する場合は、の-iname
代わりにを使用してください-name
。
-type f
用であることに注意してください。代わりにディレクトリ以外のファイルが必要な場合は、に置き換えます(ディレクトリへのシンボリックリンクも除外する場合はGNUに置き換えます)。! -type d
! -xtype d
find
ディレクトリ(コンテンツではない)とファイルの両方が必要な場合は、printf
bultin を使用できます。
printf "%s\n" [ac]*
例:
$ printf "%s\n" [te]*
examples.desktop
teamviewer_linux.deb
test.php
test.txt
とzsh
:
print -rl /etc/[ac]*(.)
またはで始まる名前のにリストされている通常のファイル(のよう-type f
にfind
)をリストします。グロブの最後の部分は、グロビング修飾子と呼ばれるzsh固有の機能です。グロビング修飾子は通常のファイルを意味します。/etc
a
c
(xxx)
.
グロブが一致しない場合はzsh
、コマンドを中止します。他のBourneのようなシェルでは、グロブが一致しない場合、パターンがそれ自体に拡張されるため、またはで始まるファイルがない場合ls -d /etc/[ac]*
、呼び出されたファイルが誤ってリストされる可能性があることに注意してください。/etc/[ac]*
a
c
/etc
print -rl /etc/[ac]*(^/)
あるファイルリストしていないタイプのディレクトリをし、
print -rl /etc/[ac]*(-^/)
シンボリックリンクを解決した後、タイプがディレクトリでないファイルをリストします。