すべてのサブフォルダーでワイルドカード名を検索するにはどうすればよいですか?


回答:


40

を使用できますfind。たとえば、abcdファイル名に含まれるすべてのファイルとディレクトリを検索する場合、次を実行できます。

find . -name '*abcd*'

12

Zsh:

ls -ld -- **/*abcd*

Ksh93:

set -o globstar     # put this line in your ~/.kshrc
ls -ld -- **/*abcd*

Bash≥4:

shopt -s globstar   # put this line in your ~/.bashrc
ls -ld -- **/*abcd*

ヤシュ:

set -o extendedglob # put this line in your ~/.yashrc
ls -ld -- **/*abcd*

tcsh:

set globstar
ls -ld -- **/*abcd*

魚:

ls -ld -- **abcd*

(;好きではないもののいくつかを、これらのシェルのいくつかは、ディレクトリツリーを下降する際にシンボリックリンクをたどるだろう注意してくださいzshyashまたはtcsh持って***/*abcd*それを行うには)。

移植性(非常に古いシステムを除く。OpenBSDは長い時間がかかりましたが、最終的にexec … +5.1以降からサポートされています):

find . -name '*abcd*' -exec ls -ld {} +

POSIXではなく、* BSD、Linux、Cygwin、BusyBoxで動作します。

find . -name '*abcd*' -print0 | xargs -0 ls -ld

一部のBSDを除き、一致するファイルが見つからls -ldない場合、引数なしで実行されるため、listが実行されることに注意してください.。一部のxargs実装では、この-rオプションを使用して回避できます。


shopt -s globstarは何をしますか?
カピバラレット

@ user2429920 gnu.org/software/bash/manual/...とにクリックスルーgnu.org/software/bash/manual/bash.html#The-Shopt-Builtin、その後にスクロールダウンglobstar
ジル 'SO-悪であるのをやめる'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.