すべてのサブフォルダーでワイルドカード名を検索するにはどうすればよいですか? DOSコマンドに相当するもの:dir *pattern* /s
* nix?
find
を使用できます。たとえば、ファイル名にabcd
が含まれるすべてのファイルとディレクトリを検索する場合は、次のコマンドを実行できます。
find . -name '*abcd*'
Zsh:
_ls -ld -- **/*abcd*
_
Ksh93:
_set -o globstar # put this line in your ~/.kshrc
ls -ld -- **/*abcd*
_
バッシュ≥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*
_
(これらのシェルの一部は、ディレクトリツリーを下るときにシンボリックリンクをたどります。zsh
、yash
、または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
_は引数なしで実行されるため、_.
_がリストされます。一部のxargs
実装では、_-r
_オプションを使用して回避できます。
他の回答では言及されていません
ls -R1 | grep pattern
使用されるls引数:
-R, --recursive
list subdirectories recursively
-1 list one file per line