ls | agrep "<search pattern #1>;<search pattern #2>;...;<search pattern #n>"
私はディレクトリ内の特定のファイルの検索/リストを迅速かつ効率的に実行するために特定の検索パターンを使用しました。たとえば、空のディレクトリを作成し、touch
次のように空のファイルを入力しました。
~ ls -l
total 0
-rw-r--r-- 1 me users 0 May 7 14:00 animals-bird_dog_cat.txt
-rw-r--r-- 1 me users 0 May 7 14:00 animals-bird_dog.txt
-rw-r--r-- 1 me users 0 May 7 14:00 animals-bird.txt
-rw-r--r-- 1 me users 0 May 7 14:00 animals-cat_dog_bird.txt
-rw-r--r-- 1 me users 0 May 7 14:00 animals-cat_dog.txt
-rw-r--r-- 1 me users 0 May 7 14:00 animals-cat.txt
-rw-r--r-- 1 me users 0 May 7 14:00 animals-dog_bird.txt
-rw-r--r-- 1 me users 0 May 7 14:00 animals-dog_cat_bird.txt
-rw-r--r-- 1 me users 0 May 7 14:00 animals-dog_cat.txt
-rw-r--r-- 1 me users 0 May 7 14:00 animals-dog.txt
次に、を使用して、ls -l | agrep "cat;bird"
名前に次のファイルのみを含むファイルを検索/検索できます。猫そして鳥次のようになります。
~ ls -l | agrep 'cat;bird'
-rw-r--r-- 1 me users 0 May 7 14:00 animals-bird_dog_cat.txt
-rw-r--r-- 1 me users 0 May 7 14:00 animals-cat_dog_bird.txt
-rw-r--r-- 1 me users 0 May 7 14:00 animals-dog_cat_bird.txt
AFAICT、この方法は非常に高速で効果的です(私はより良いソリューションが欲しい)。これは毎日たくさん行われるので、CLIで検索パターンを提供することで、これらの作業を実行できる単純なシェルスクリプトを書くのが最善だと思いました。たとえば、次のように単純なシェルスクリプトを作成し、名前を付けてmls
実行可能にしました。
#!/bin/bash
bold=$(tput bold)
italic=$(tput sitm)
normal=$(tput sgr0)
if [ "$#" -lt 1 ]; then
echo "${bold}Usage${normal}: $0 <search string 0> [... <search string n>]"
exit 0
fi
patterns=""
for ((i=1;i<$#;i++))
do
patterns+="${!i};"
done
patterns+="${!#}"
/usr/bin/ls -lart | agrep '${patterns}${!#}'
その後、検索モードを使用して上記のシェルスクリプトを実行すると、mls cat bird
以下のように何も返されません。
~ ls -l | agrep 'cat;bird'
-rw-r--r-- 1 me users 0 May 7 14:00 animals-bird_dog_cat.txt
-rw-r--r-- 1 me users 0 May 7 14:00 animals-cat_dog_bird.txt
-rw-r--r-- 1 me users 0 May 7 14:00 animals-dog_cat_bird.txt
~ mls cat bird
~
私が逃したものは何ですか?
ベストアンサー1
ここで切り替えることができますzsh
。対応するglobは、OR、AND(およびAND-NOTとNOT)と近似をサポートします。
$ set -o extendedglob # best in ~/.zshrc
$ ls -ld -- (#a1)*dig*~^(#a1)*bard*
-rw-rw-r-- 1 chazelas chazelas 0 May 8 16:24 animals-bird_dog_cat.txt
-rw-rw-r-- 1 chazelas chazelas 0 May 8 16:24 animals-bird_dog.txt
-rw-rw-r-- 1 chazelas chazelas 0 May 8 16:24 animals-cat_dog_bird.txt
-rw-rw-r-- 1 chazelas chazelas 0 May 8 16:24 animals-dog_bird.txt
-rw-rw-r-- 1 chazelas chazelas 0 May 8 16:24 animals-dog_cat_bird.txt