最大の問題は、私のディレクトリに大文字のファイルが多いことです。(例:Foobar.txt
、、、FooBar.txt
でもFOOBAR.txt
)。正確に入力してファイルを見つけるのは混乱しています。(正しいファイル名がわかっている場合find
? )。だから私はただ入力し、foobar
3つのファイルすべてが結果に表示されるようにします。
また、*
文字列の両側を使用して、ファイル名の前後の文字数を一致させます。
これを行うエイリアスまたは関数が欲しい。
答え1
もしそうなら、正しい方法は
find -iname \*foobar\*
これは-iname
大文字と小文字を区別しない検索のためのものですが、ワイルドカードを\
エスケープするためのものです*
。
この場合、関数は少し不要に見えますが、書くのは簡単です。
function lazyfind ()
{
find -iname \*$1\*
}
答え2
オペレーティングシステムにGNU find -inameオプションがない場合、同じ目的を達成するための移植可能な方法は次のとおりです。
cifind()
{
pattern=""
l=${#1}
i=1
while [ $i -le $l ] ; do
lc=$(echo "$1" | cut -c $i-$i | tr '[A-Z]' '[a-z]')
uc=$(echo "$lc" | tr '[a-z]' '[A-Z]')
if [ ."$lc" != ."$uc" ] ; then
pattern="${pattern}[$lc$uc]"
else
pattern="${pattern}$lc"
fi
i=$((i + 1))
done
find . -name "*$pattern*"
}