次のコマンドを使用して、3文字で終わるディレクトリまたはファイルを見つけようとします。
ls -l /etc | grep ???$
これはできません、、
3、4、5、6、7...文字で終わるファイルのディレクトリを見つけるには何を入力する必要がありますか?
ベストアンサー1
find /etc -maxdepth 1 -regextype egrep -regex '.*/.{3}$'
/etc/
これにより、ファイル名またはディレクトリ名が次から検索されます。正確に3文字の長さです。
find /etc -maxdepth 1 -regextype egrep -regex '.*/.{3,}$'
/etc/
その後、次のファイルまたはディレクトリを見つけることができます。最低限度で3文字の長さです。
find /etc -maxdepth 1 -regextype egrep -regex '.*/.{3,7}$'
/etc
これにより、3〜7文字のファイルまたはディレクトリが検索されます。
-maxdepth 1
findが/ etcのサブディレクトリを検索するのを防ぎます。
一致するディレクトリのみを制限するにはを使用します-type d
。-maxdepth 1
一般ファイルの場合-type f
。
見つかったファイル/ディレクトリに対して操作を実行したい場合は、findの-exec
オプションを使用できます。例えば
find /etc -maxdepth 1 -regextype egrep -regex '.*/.{3,7}$' -exec du -sch {} +
またはxargs
(ただし、ファイル名のスペースや改行などの問題を回避するには、NUL区切り文字を使用してください)。これにより、以前にパイプラインで NUL で区切られた入力を処理できるすべてのツールを使用できますxargs
。たとえば、
find /etc -maxdepth 1 -regextype egrep -regex '.*/.{3,7}$' -print0 |
head -z -n 10 |
xargs -0r ls -ld