たとえば、フォルダに多くのファイルがあります
Kiran.txt
Kiran1.txt
Kiran221.txt
Kiran144.txt
Time.csv
Timer.csv
Timer2.csv
Timer444.csv
Timer266.csv
Account.sh
Account3.sh
Account3333.sh
Account3333.sh
Account333333.sh
このディレクトリから、grep
を使用して、ファイル名の一部に基づいてファイルを表示する方法を知りたいです。たとえば、「Account」で始まるファイルや「.sh」で終わるファイルなどです。
find
できます
find -type f -name "Account*"
代替案2(これにはフォルダも含まれる場合があります)
ls -1 Account*
代替案3(grep、これにはフォルダーも含まれる可能性があります)
ls -1 | grep -E "^Account"
ワイルドカードを使用する( このワイルドカードは何ですか? ):
ls *.sh
*
は、終了する.sh
の前にあるものと一致します。表示には他のls
オプションを使用します。 -l
長いリストにします。それを使って何ができるかについての詳細は、man ls
を参照してください。
ls
は、ファイルだけでなく、.sh
で終わるディレクトリもリストすることに注意してください。
find
を使用して、この問題を解決することもできます。
find . -type f -maxdepth 1 -name "*.sh"
このコマンドは、「実際の」ファイルのみを一覧表示します。後で見つかったファイルで何かをしたい場合は、findを使用することをお勧めします。これは -exec
オプション で実行できます。
次のコマンドを使用します
ls *.sh
標準的な解決策はパイプです:
ls | grep ^Account
「アカウントで始まるファイル」のような単純なものでは、グロブも機能します。
ls Account*
ただし、一般に、grepの方が強力であり、フォルダーが本当にいっぱいの場合、コマンドラインの最大長がオーバーフローするリスクはありません。