提供されたパターンに基づいてフォルダのファイル名を一覧表示するにはどうすればよいですか?

提供されたパターンに基づいてフォルダのファイル名を一覧表示するにはどうすればよいですか?

入力したキーワードを含むフォルダ内のすべてのファイルを一覧表示するコマンドを見つけようとします。

これを試しましたが、grep -l何もしません。

答え1

find /path/to/folder -type f -name "*key*"

上記のコマンドは、すべてのサブディレクトリからファイルを検索します。サブディレクトリではなく現在のディレクトリのファイルのみを検索するには、次のコマンドを使用します。

find /path/to/folder -maxdepth 1 -type f -name "*key*"

上記のコマンドは bash シェルにのみ適用されます。

答え2

このlsコマンドはファイルのリストを表示するために使用されます。シェルには、パターンに一致するファイルを一覧表示するさまざまなオプションがあります。たとえば、次のようになります。

  • 「a」で始まるすべてのファイルを一覧表示します。ls a*
  • 「.txt」で終わるすべてのファイルを一覧表示します。ls *.txt
  • 「x」で始まり、「.sh」で終わるすべてのファイルを一覧表示します。ls x*.sh

もっと興味深いモードがあります。詳しくは、man bash「/」キーを押して検索し、man bash「Pattern Matching」というテキストを入力し、Enterキーを押して関連セクションに移動できます。

答え3

set ./*keyword*
[ -e "$1" ] || shift
printf "${1+%s\n}" "$@"

以下を含む現在のディレクトリのすべてのファイルのリストを印刷します。*keyword* (しない.。しかし、もっと重要なのは、シェルの位置配列をファイル名に設定することです。したがって、これらのファイルが存在する場合などで"$1"個別に参照することができ"$2"、全内容は で参照できます"$#"

関連情報